Build path optimization using grouped trianges of a polygonal mesh

ABSTRACT

The strength of a bond between two adjacent layers of a three-dimensional print is weakened by initiating fabrication of a top layer at a height greater than the processing height for the print. This technique may be used in particular at the interface between a raft or other support and an object being fabricated, after which the printing process may return to a regular process height for additional layers used to fabricate the remainder of the object.

RELATED APPLICATIONS

This application is a continuation of U.S. Pat. Application No.16/272,438 filed on Feb. 11, 2019, which is a continuation of U.S. Pat.Application No. 14/303,450 filed on Jun. 12, 2014 (now U.S. Pat. No.10,201,929), which claims the benefit of U.S. App. No. 61/834,392 filedon Jun. 12, 2013, where the entire content of each of the foregoing ishereby incorporated by reference.

TECHNICAL FIELD

The present disclosure generally relates to three-dimensionalfabrication, and more specifically to various systems and methods toimprove three-dimensional printing and devices for same.

BACKGROUND

Rafts may be used in a three-dimensional printing process for automaticleveling and to prevent warping of an object being printed. Essentially,a raft is a platform for an object that is fabricated on another surfaceprior to the object itself in order to provide a consistent surface onwhich to initiate fabrication. A typical raft is printed from the samebuild material as the object using a regular grid of spaced apart roads.This provides a level surface of material that can bond to the objectwhile reducing the surface area of contact between the raft and theobject.While this works adequately, there is still a strong bond formedbetween the raft and the object at some locations, which can necessitateadditional finishing steps for removal. Additionally, the spacingbetween segments of the raft may cause drooping as a road from theobject bridges from segment to segment of the raft. There remains a needfor improved rafts for use in three-dimensional printing.

SUMMARY

The strength of a bond between two adjacent layers of athree-dimensional print is weakened by initiating fabrication of a toplayer at a height greater than the processing height for the print. Thistechnique may be used in particular at the interface between a raft orother support and an object being fabricated, after which the printingprocess may return to a regular process height for additional layersused to fabricate the remainder of the object.

BRIEF DESCRIPTION OF THE DRAWINGS

The foregoing and other objects, features and advantages of the devices,systems, and methods described herein will be apparent from thefollowing description of particular embodiments thereof, as illustratedin the accompanying drawings. The drawings are not necessarily to scale,emphasis instead being placed upon illustrating the principles of thedevices, systems, and methods described herein.

FIG. 1 is a block diagram of a three-dimensional printer.

FIG. 2 is an isometric view of a conveyer for an automated buildprocess.

FIG. 3 depicts a networked three-dimensional printing environment.

FIG. 4 is a flowchart of a method for using a three-dimensional printer,such as any of the three-dimensional printers described above, whencoupled to a data network.

FIG. 5 depicts a user interface for management of networked printing.

FIG. 6 is a flowchart of a method for operating a three-dimensionalprinter coupled to a network.

FIG. 7 is a flowchart of a method for operating a three-dimensionalprinter coupled to a network.

FIGS. 8A and 8B illustrate fabrication of a raft for a three-dimensionalprinting process.

FIG. 9 shows possible processing heights for layers of athree-dimensional build.

FIG. 10 shows a first layer in a three-dimensional printing process.

FIG. 11 shows a second layer in a three-dimensional printing process.

FIG. 12 shows a third layer in a three-dimensional printing process.

FIG. 13 is a flowchart of a method foroperating a three-dimensionalprinter.

FIG. 14 is a flowchart of a method foroperating a three-dimensionalprinter.

FIG. 15 depicts a networked three-dimensional printing environment.

FIG. 16 is a flowchart of a method for generating extrusion paths andbuilding a three-dimensional object based on a digital three-dimensionalmodel.

FIG. 17 is a flowchart of a method for operating a three-dimensionalprinter.

FIG. 18 is a flowchart of a method for identifying and printing spurs.

FIG. 19 is a flowchart for smoothing in a three-dimensional printingprocess.

DETAILED DESCRIPTION

The embodiments will now be described more fully hereinafter withreference to the accompanying figures, in which preferred embodimentsare shown. The foregoing may, however, be embodied in many differentforms and should not be construed as limited to the illustratedembodiments set forth herein. Rather, these illustrated embodiments areprovided so that this disclosure will convey the scope to those skilledin the art.

All documents mentioned herein are hereby incorporated by reference intheir entirety. References to items in the singular should be understoodto include items in the plural, and vice versa, unless explicitly statedotherwise or clear from the text. Grammatical conjunctions are intendedto express any and all disjunctive and conjunctive combinations ofconjoined clauses, sentences, words, and the like, unless otherwisestated or clear from the context. Thus, the term “or” should generallybe understood to mean “and/or” and so forth.

Recitation of ranges of values herein are not intended to be limiting,referring instead individually to any and all values falling within therange, unless otherwise indicated herein, and each separate value withinsuch a range is incorporated into the specification as if it wereindividually recited herein. The words “about,” “approximately,” or thelike, when accompanying a numerical value, are to be construed asindicating a deviation as would be appreciated by one of ordinary skillin the art to operate satisfactorily for an intended purpose. Ranges ofvalues and/or numeric values are provided herein as examples only, anddo not constitute a limitation on the scope of the describedembodiments. The use of any and all examples, or exemplary language(“e.g.,” “such as,” or the like) provided herein, is intended merely tobetter illuminate the embodiments and does not pose a limitation on thescope of the embodiments. No language in the specification should beconstrued as indicating any unclaimed element as essential to thepractice of the embodiments.

In the following description, it is understood that terms such as“first,” “second,” “top,” “bottom,” “up,” “down,” and the like, arewords of convenience and are not to be construed as limiting terms

Described herein are devices, systems, and methods for usingthree-dimensional printers, including using networked three-dimensionalprinters, creating rafts for use in a three-dimensional printingprocess, slicing techniques, curved layer printing techniques,techniques for spurs, and smoothing techniques. It will be understoodthat while the exemplary embodiments below emphasize fabricationtechniques using extrusion, the principles of the invention may beadapted to a wide variety of three-dimensional fabrication processes,and in particular additive fabrication processes including withoutlimitation selective laser sintering, fused deposition modeling,three-dimensional printing, and the like. All such variations that canbe adapted to use with a networked fabrication resource as describedherein are intended to fall within the scope of this disclosure.Itshould also be understood that any reference herein to a fabricationprocess such as printing or three-dimensional printing is intended torefer to any and all such additive fabrication process unless adifferent meaning is explicitly stated or otherwise clear from thecontext. Thus by way of example and not of limitation, athree-dimensional printer (or simply “printer”) is now described thatmay be used in a networked three-dimensional printing environment.

FIG. 1 is a block diagram of a three-dimensional printer. In general,the printer 100 may include a build platform 102, a conveyor 104, anextruder 106, an x-y-z positioning assembly 108, and a controller 110that cooperate to fabricate an object 112 within a working volume 114 ofthe printer 100.

The build platform 102 may include a surface 116 that is rigid andsubstantially planar. The surface 116 may support the conveyer 104 inorder to provide a fixed, dimensionally and positionally stable platformon which to build the object 112.

The build platform 102 may include a thermal element 130 that controlsthe temperature of the build platform 102 through one or more activedevices 132 such as resistive elements that convert electrical currentinto heat, Peltier effect devices that can create a heating or coolingaffect, or any other thermoelectric heating and/or cooling devices. Thusthe thermal element 130 may be a heating element that provides activeheating to the build platform 102, a cooling element that providesactive cooling to the build platform 102, or a combination of these. Theheating element 130 may be coupled in a communicating relationship withthe controller 110 in order for the controller 110 to controllablyimpart heat to or remove heat from the surface 116 of the build platform102. Thus the thermal element 130 may include an active cooling elementpositioned within or adjacent to the build platform 102 to controllablycool the build platform 102.

It will be understood that a variety of other techniques may be employedto control a temperature of the build platform 102. For example, thebuild platform 102 may use a gas cooling or gas heating device such as avacuum chamber or the like in an interior thereof, which may be quicklypressurized to heat the build platform 102 or vacated to cool the buildplatform 102 as desired. As another example, a stream of heated orcooled gas may be applied directly to the build platform 102 before,during, and/or after a build process. Any device or combination ofdevices suitable for controlling a temperature of the build platform 102may be adapted to use as the thermal element 130 described herein.

The conveyer 104 may be formed of a sheet 118 of material that moves ina path 120 through the working volume 114. Within the working volume114, the path 120 may pass proximal to the surface 116 of the buildplatform 102 - that is, resting directly on or otherwise supported bythe surface 116 -- in order to provide a rigid, positionally stableworking surface for a build. It will be understood that while the path120 is depicted as a unidirectional arrow, the path 120 may bebidirectional, such that the conveyer 104 can move in either of twoopposing directions through the working volume 114. It will also beunderstood that the path 120 may curve in any of a variety of ways, suchas by looping underneath and around the build platform 102, over and/orunder rollers, or around delivery and take up spools for the sheet 118of material. Thus, while the path 120 may be generally (but notnecessarily) uniform through the working volume 114, the conveyer 104may move in any direction suitable for moving completed items from theworking volume 114. The conveyor may include a motor or other similardrive mechanism (not shown) coupled to the controller 110 to controlmovement of the sheet 118 of material along the path 120. Various drivemechanisms are shown and described in further detail below.

In general, the sheet 118 may be formed of a flexible material such as amesh material, a polyamide, a polyethylene terephthalate (commerciallyavailable in bi-axial form as MYLAR), a polyimide film (commerciallyavailable as KAPTON), or any other suitably strong polymer or othermaterial. The sheet 118 may have a thickness of about three to seventhousandths of an inch, or any other thickness that permits the sheet118 to follow the path 120 of the conveyer 104. For example, withsufficiently strong material, the sheet 118 may have a thickness of oneto three thousandths of an inch. The sheet 118 may instead be formed ofsections of rigid material joined by flexible links.

A working surface of the sheet 118 (e.g., an area on the top surface ofthe sheet 118 within the working volume 114) may be treated in a varietyof manners to assist with adhesion of build material to the surface 118and/or removal of completed objects from the surface 118. For example,the working surface may be abraded or otherwise textured (e.g., withgrooves, protrusions, and the like) to improve adhesion between theworking surface and the build material.

A variety of chemical treatments may be used on the working surface ofthe sheet 118 of material to further facilitate build processes asdescribed herein. For example, the chemical treatment may include adeposition of material that can be chemically removed from the conveyer104 by use of water, solvents, or the like. This may facilitateseparation of a completed object from the conveyer by dissolving thelayer of chemical treatment between the object 112 and the conveyor 104.The chemical treatments may include deposition of a material that easilyseparates from the conveyer such as a wax, mild adhesive, or the like.The chemical treatment may include a detachable surface such as anadhesive that is sprayed on to the conveyer 104 prior to fabrication ofthe object 112.

In one aspect, the conveyer 104 may be formed of a sheet of disposable,one-use material that is fed from a dispenser and consumed with eachsuccessive build.

In one aspect, the conveyer 104 may include a number of differentworking areas with different surface treatments adapted for differentbuild materials or processes. For example, different areas may havedifferent textures (smooth, abraded, grooved, etc.). Different areas maybe formed of different materials. Different areas may also have orreceive different chemical treatments. Thus a single conveyer 104 may beused in a variety of different build processes by selecting the variousworking areas as needed or desired.

The extruder 106 may include a chamber 122 in an interior thereof toreceive a build material. The build material may, for example, includeacrylonitrile butadiene styrene (“ABS”), high-density polyethylene(“HDPL”), polylactic acid, or any other suitable plastic, thermoplastic,or other material that can usefully be extruded to form athree-dimensional object. The extruder 106 may include an extrusion tip124 or other opening that includes an exit port with a circular, oval,slotted or other cross-sectional profile that extrudes build material ina desired cross-sectional shape.

The extruder 106 may include a heater 126 to melt thermoplastic or othermeltable build materials within the chamber 122 for extrusion through anextrusion tip 124 in liquid form. While illustrated in block form, itwill be understood that the heater 124 may include, e.g., coils ofresistive wire wrapped about the extruder 106, one or more heatingblocks with resistive elements to heat the extruder 106 with appliedcurrent, an inductive heater, or any other arrangement of heatingelements suitable for creating heat within the chamber 122 to melt thebuild material for extrusion. The extruder 106 may also or insteadinclude a motor 128 or the like to push the build material into thechamber 122 and/or through the extrusion tip 126.

In general operation (and by way of example rather than limitation), abuild material such as ABS plastic in filament form may be fed into thechamber 122 from a spool or the like by the motor 128, melted by theheater 126, and extruded from the extrusion tip 124. By controlling arate of the motor 128, the temperature of the heater 126, and/or otherprocess parameters, the build material may be extruded at a controlledvolumetric rate. It will be understood that a variety of techniques mayalso or instead be employed to deliver build material at a controlledvolumetric rate, which may depend upon the type of build material, thevolumetric rate desired, and any other factors. All such techniques thatmight be suitably adapted to delivery of build material for fabricationof a three-dimensional object are intended to fall within the scope ofthis disclosure.As noted above, other techniques may be employed forthree-dimensional printing, including extrusion-based techniques using abuild material that is curable and/or a build material of sufficientviscosity to retain shape after extrusion.

The x-y-z positioning assembly 108 may generally be adapted tothree-dimensionally position the extruder 106 and the extrusion tip 124within the working volume 114. Thus by controlling the volumetric rateof delivery for the build material and the x, y, z position of theextrusion tip 124, the object 112 may be fabricated in three dimensionsby depositing successive layers of material in two-dimensional patternsderived, for example, from cross-sections of a computer model or othercomputerized representation of the object 112. A variety of arrangementsand techniques are known in the art to achieve controlled linearmovement along one or more axes. The x-y-z positioning assembly 108 may,for example, include a number of stepper motors 109 to independentlycontrol a position of the extruder within the working volume along eachof an x-axis, a y-axis, and a z-axis. More generally, the x-y-zpositioning assembly 108 may include without limitation variouscombinations of stepper motors, encoded DC motors, gears, belts,pulleys, worm gears, threads, and so forth. Any such arrangementsuitable for controllably positioning the extruder 106 within theworking volume 114 may be adapted to use with the printer 100 describedherein.

By way of example and not limitation, the conveyor 104 may be affixed toa bed that provides x-y positioning within the plane of the conveyor104, while the extruder 106 can be independently moved along a z-axis.As another example, the extruder 106 may be stationary while theconveyor 104 is x, y, and z positionable. As another example, theextruder 106 may be x, y, and z positionable while the conveyer 104remains fixed (relative to the working volume 114). In yet anotherexample, the conveyer 104 may, by movement of the sheet 118 of material,control movement in one axis (e.g., the y-axis), while the extruder 106moves in the z-axis as well as one axis in the plane of the sheet 118.Thus in one aspect, the conveyor 104 may be attached to and move with atleast one of an x-axis stage (that controls movement along the x-axis),a y-axis stage (that controls movement along a y-axis), and a z-axisstage (that controls movement along a z-axis) of the x-y-z positioningassembly 108. More generally, any arrangement of motors and otherhardware controllable by the controller 110 may serve as the x-y-zpositioning assembly 108 in the printer 100 described herein. Still moregenerally, while an x, y, z coordinate system serves as a convenientbasis for positioning within three dimensions, any other coordinatesystem or combination of coordinate systems may also or instead beemployed, such as a positional controller and assembly that operatesaccording to cylindrical or spherical coordinates.

The controller 110 may be electrically coupled in a communicatingrelationship with the build platform 102, the conveyer 104, the x-y-zpositioning assembly 108, and the other various components of theprinter 100. In general, the controller 110 is operable to control thecomponents of the printer 100, such as the build platform 102, theconveyer 104, the x-y-z positioning assembly 108, and any othercomponents of the printer 100 described herein to fabricate the object112 from the build material. The controller 110 may include anycombination of software and/or processing circuitry suitable forcontrolling the various components of the printer 100 described hereinincluding without limitation microprocessors, microcontrollers,application-specific integrated circuits, programmable gate arrays, andany other digital and/or analog components, as well as combinations ofthe foregoing, along with inputs and outputs for transceiving controlsignals, drive signals, power signals, sensor signals, and so forth. Inone aspect, the controller 110 may include a microprocessor or otherprocessing circuitry with sufficient computational power to providerelated functions such as executing an operating system, providing agraphical user interface (e.g., to a display coupled to the controller110 or printer 100), convert three-dimensional models into toolinstructions, and operate a web server or otherwise host remote usersand/or activity through the network interface 136 described below.

A variety of additional sensors may be usefully incorporated into theprinter 100 described above. These are generically depicted as sensor134 in FIG. 1 , for which the positioning and mechanical/electricalinterconnections with other elements of the printer 100 will depend uponthe type and purpose of the sensor 134 and will be readily understoodand appreciated by one of ordinary skill in the art. The sensor 134 mayinclude a temperature sensor positioned to sense a temperature of thesurface of the build platform 102. This may, for example, include athermistor or the like embedded within or attached below the surface ofthe build platform 102. This may also or instead include an infrareddetector or the like directed at the surface 116 of the build platform102 or the sheet 118 of material of the conveyer 104. Other sensors thatmay be usefully incorporated into the printer 100 as the sensor 134include a heat sensor, a volume flow rate sensor, a weight sensor, asound sensor, and a light sensor. Certain more specific examples areprovided below by way of example and not of limitation.

The sensor 134 may include a sensor to detect a presence (or absence) ofthe object 112 at a predetermined location on the conveyer 104. This mayinclude an optical detector arranged in a beam-breaking configuration tosense the presence of the object 112 at a location such as an end of theconveyer 104. This may also or instead include an imaging device andimage processing circuitry to capture an image of the working volume 114and analyze the image to evaluate a position of the object 112. Thissensor 134 may be used for example to ensure that the object 112 isremoved from the conveyor 104 prior to beginning a new build at thatlocation on the working surface such as the surface 116 of the buildplatform 102. Thus the sensor 134 may be used to determine whether anobject is present that should not be, or to detect when an object isabsent. The feedback from this sensor 134 may be used by the controller110 to issue processing interrupts or otherwise control operation of theprinter 100.

The sensor 134 may include a sensor that detects a position of theconveyer 104 along the path. This information may be obtained from anencoder in a motor that drives the conveyer 104, or using any othersuitable technique such as a visual sensor and corresponding fiducials(e.g., visible patterns, holes, or areas with opaque, specular,transparent, or otherwise detectable marking) on the sheet 118.

The sensor 134 may include a heater (instead of or in addition to thethermal element 130) to heat the working volume 114 such as a radiantheater or forced hot air to maintain the object 112 at a fixed, elevatedtemperature throughout a build. The sensor 134 may also or insteadinclude a cooling element to maintain the object 112 at a predeterminedsub-ambient temperature throughout a build.

The sensor 134 may also or instead include at least one video camera.The video camera may generally capture images of the working volume 114,the object 112, or any other hardware associated with the printer 100.The video camera may provide a remote video feed through the networkinterface 136, which feed may be available to remote users through auser interface maintained by, e.g., remote hardware such as the printservers described below with reference to FIG. 3 , or within a web pageprovided by a web server hosted by the three-dimensional printer 100.Thus in one aspect there is disclosed herein a user interface adapted topresent a video feed from at least one video camera of athree-dimensional printer to a remote user through a user interface.

The sensor 134 may include may also include more complex sensing andprocessing systems or subsystems, such as a three-dimensional scannerusing optical techniques (e.g., stereoscopic imaging, or shape frommotion imaging), structured light techniques, or any other suitablesensing and processing hardware that might extract three-dimensionalinformation from the working volume 114. In another aspect, the sensor134 may include a machine vision system that captures images andanalyzes image content to obtain information about the status of a job,working volume 114, or an object 112 therein. The machine vision systemmay support a variety of imaging-based automatic inspection, processcontrol, and/or robotic guidance functions for the three-dimensionalprinter 100 including without limitation pass/fail decisions, errordetection (and corresponding audible or visual alerts), shape detection,position detection, orientation detection, collision avoidance, and soforth.

Other components, generically depicted as other hardware 135, may alsobe included, such as input devices including a keyboard, touchpad,mouse, switches, dials, buttons, motion sensors, and the like, as wellas output devices such as a display, a speaker or other audiotransducer, light emitting diodes, and so forth. Other hardware 135 mayalso or instead include a variety of cable connections and/or hardwareadapters for connecting to, e.g., external computers, external hardware,external instrumentation or data acquisition systems, and so forth.

The printer 100 may include, or be connected in a communicatingrelationship with, a network interface 136. The network interface 136may include any combination of hardware and software suitable forcoupling the controller 110 and other components of the printer 100 to aremote computer in a communicating relationship through a data network.By way of example and not limitation, this may include electronics for awired or wireless Ethernet connection operating according to the IEEE802.11 standard (or any variation thereof), or any other short or longrange wireless networking components or the like. This may includehardware for short range data communications such as Bluetooth or aninfrared transceiver, which may be used to couple into a local areanetwork or the like that is in turn coupled to a data network such asthe Internet. This may also or instead include hardware/software for aWiMAX connection or a cellular network connection (using, e.g., CDMA,GSM, LTE, or any other suitable protocol or combination of protocols).Consistently, the controller 110 may be configured to controlparticipation by the printer 100 in any network to which the networkinterface 136 is connected, such as by autonomously connecting to thenetwork to retrieve printable content, or responding to a remote requestfor status or availability. Networked uses of the printer 100 arediscussed in greater detail below.

FIG. 2 is an isometric view of a conveyer for an automated buildprocess. The conveyer 200 may include a sheet 202 of material thatprovides a working surface 204 for three-dimensional fabrication. Asdepicted, the conveyer may form a continuous path 206 about a buildplatform 208 by arranging the sheet 202 as a belt or the like. Thus forexample, the path 206 may move parallel to the surface of the buildplatform 208 along the top of the build platform 208 (from left to rightin FIG. 2 ). The sheet 202 may then curve downward and around a roller210 and reverse direction underneath the build platform 208, returningagain at an opposing roller 212 to form a loop about the build platform208.

The roller 210 may be coupled by gears 214 or the like to a motor (notshown) to move the sheet 202 of material. The motor may be controlled bya controller (such as the controller 110 described above) to controlmovement of the sheet 202 of material in a build process.

The conveyer 200 may include a scraper 216 to physically separate acompleted object from the conveyer 200 based upon a relative movement ofthe sheet 202 of material of the conveyor 200 to the scraper 216. Ingeneral, adhesion of an object to a working surface maintains the objectwithin the coordinate system of the printer during a build in order tofacilitate the build process. Where good adhesion is achieved during abuild, dislodging the completed object from the working surface mayrequire significant force. Thus in order to ensure the availability of acontinuous working surface, the conveyer 200 may enforce physicalseparation of the object from the working surface by passing the sheet202 of material by the scraper 216 to dislodge the object. While thescraper 216 is depicted below the working surface of the sheet 202, itwill be readily understood that a variety of positions and orientationsof the scraper 216 may achieve similar results. Thus for example, thescraper 216 may extend vertically above or below the sheet 202,horizontally from the sheet 202, or in any other suitable orientation.It will also be appreciated that while the scraper 216 is depicted in anorientation perpendicular to the path 206, the scraper 216 may be angledin order to also urge a completed object off the sheet 202 in anydesired direction, such as to a side of the working surface where achute or receptacle may be provided to catch and store the completedobject. In some embodiments, the conveyor 200 may transport the objectto a side of the printer 100, or alternatively the entire conveyor 200assembly may be moved outside the printer, so that urging the completedobject off the sheet 202 also causes the competed object to depart theprinter 100. The term ‘scraper’ should be understood as referring in anon-limiting sense to any physical fixture that might be employed toremove an object from the sheet 202, and that many other shapes, sizes,orientations, and the like may also or instead be employed as thescraper 216 described herein without departing from the scope of thisdisclosure.

In one aspect, the conveyer 200 may support networked use of the printer100 by permitting fabrication of multiple, consecutive parts undercontrol by a remote computer without user intervention.

FIG. 3 depicts a networked three-dimensional printing environment. Ingeneral, the environment 300 may include a data network 302interconnecting a plurality of participating devices in a communicatingrelationship. The participating devices may, for example, include anynumber of three-dimensional printers 304 (also referred tointerchangeably herein as “printers”), client devices 306, print servers308, content sources 310, mobile devices 314, and other resources 316.

The data network 302 may be any network(s) or internetwork(s) suitablefor communicating data and control information among participants in theenvironment 300. This may include public networks such as the Internet,private networks, telecommunications networks such as the PublicSwitched Telephone Network orcellular networks using third generation(e.g., 3G or IMT-2000), fourth generation (e.g., LTE (E-UTRA) orWiMAX-Advanced (IEEE 802.16m), as well as any of a variety of corporatearea or local area networks and other switches, routers, hubs, gateways,and the like that might be used to carry data among participants in theenvironment 300.

The three-dimensional printers 304 may be any computer-controlleddevices for three-dimensional fabrication, including without limitationany of the three-dimensional printers or other fabrication orprototyping devices described above. In general, each such device mayinclude a network interface comprising, e.g., a network interface card,which term is used broadly herein to include any hardware (along withsoftware, firmware, or the like to control operation of same) suitablefor establishing and maintaining wired and/or wireless communications.The network interface card may include without limitation wired Ethernetnetwork interface cards (“NICs”), wireless 802.11 networking cards,wireless 802.11 USB devices, or other hardware for wireless local areanetworking. The network interface may also or instead include cellularnetwork hardware, wide area wireless network hardware or any otherhardware for centralized, ad hoc, peer-to-peer, or other radiocommunications that might be used to carry data. In another aspect, thenetwork interface may include a serial or USB port used to directlyconnect to a computing device such as a desktop computer that, in turn,provides more general network connectivity to the data network 302.

Client devices 306 may in general be devices within the environment 300operated by users to initiate and monitor print jobs at thethree-dimensional printers 304. This may include desktop computers,laptop computers, network computers, tablets, or any other computingdevice that can participate in the environment 300 as contemplatedherein. Each client device 306 generally provides a user interface,which may include a graphical user interface and/or text or command lineinterface to control operation of remote three-dimensional printers 304.The user interface may be maintained by a locally executing applicationon one of the client devices 306 that receives data and statusinformation from, e.g., the printers 304 and print servers 308concerning pending or executing print jobs, and creates a suitabledisplay on the client device 306 for user interaction. In otherembodiments, the user interface may be remotely served and presented onone of the client devices 306, such as where a print server 308 or oneof the three-dimensional printers 304 includes a web server thatprovides information through one or more web pages or the like that canbe displayed within a web browser or similar client executing on one ofthe client devices 306.

The print servers 308 may include data storage, a network interface, anda processor or other processing circuitry. In the following description,where the functions or configuration of a print server 308 aredescribed, this is intended to included corresponding functions orconfiguration (e.g., by programming) of a processor of the print server308. In general, the print servers 308 (or processors thereof) mayperform a variety of processing tasks related to management of networkedprinting. For example, the print servers 308 may manage print jobsreceived from one or more of the client devices 306, and provide relatedsupporting functions such as content search and management. A printserver 308 may also include a web server that provides web-based accessby the client devices 306 to the capabilities of the print server 308. Aprint server 308 may also communicate periodically withthree-dimensional printers 304 in order to obtain status informationconcerning, e.g., availability of printers and/or the status ofparticular print jobs, any of which may be subsequently presented to auser through the web server. A print server 308 may also maintain a listof available three-dimensional printers 304, and may automaticallyselect one of the three-dimensional printers 304 for a user-submittedprint job, or may permit a user to specify a single printer, or a groupof preferred printers, for fabricating an object. Where the print server308 selects the printer automatically, any number of criteria may beused such as geographical proximity, printing capabilities, currentprint queue, fees (if any) for use of a particular three-dimensionalprinter 304, and so forth. Where the user specifies criteria, this maysimilarly include any relevant aspects of three-dimensional printers304, and may permit use of absolute criteria (e.g., filters) orpreferences, which may be weighted preferences or unweightedpreferences, any of which may be used by a print server 308 to allocatea print job to a suitable resource.

Other user preferences may be usefully stored at the print server 308 tofacilitate autonomous, unsupervised fabrication of content from contentsources 310. For example, a print server 308 may store a user’spreference on handling objects greater than a build volume of a printer.These preferences may control whether to resize the object, whether tobreak the object into multiple sub-objects for fabrication, and whetherto transmit multiple sub-objects to a single printer or multipleprinters.In addition, user preferences or requirements may be stored,such as multi-color printing capability, build material options andcapabilities, and so forth. More generally, the print queue may bemanaged by a print server 308 according to one or more criteria from aremote user requesting a print job. The print server 308 may also storeuser preferences or criteria for filtering content, e.g., for automaticprinting or other handling. While this is described below as a featurefor autonomous operation of a printer (such as a printer that locallysubscribes to a syndicated model source), any criteria that can be usedto identify models of potential interest by explicit type (e.g., labeledin model metadata), implicit type (e.g., determined based on analysis ofthe model), source, and so forth, may be provided to the print server308 and used to automatically direct new content to one or moreuser-specified ones of the three-dimensional printers 304.

In one aspect, the processor of the print server may be configured tostore a plurality of print jobs submitted to the web server in a log andto provide an analysis of print activity based on the log. This mayinclude any type of analysis that might be useful to participants in theenvironment 300. For example, the analysis may include tracking of thepopularity of particular objects, or of particular content sources. Theanalysis may include tracking of which three-dimensional printers 304are most popular or least popular, or related statistics such as theaverage backlog of pending print jobs at a number of thethree-dimensional printers 304. More generally, any statistics or datamay be obtained, and any analysis may be performed, that might be usefulto users (e.g., when requesting prints), content sources (e.g., whenchoosing new printable objects for publication), providers offabrication resources (e.g., when setting fees), or network facilitatorssuch as the print servers 308.

A print server 308 may also maintain a database 309 of content, alongwith an interface for users at client devices 306 to search the database309 and request fabrication of objects in the database 309 using any ofthe three-dimensional printers 304. Thus in one aspect, a print server308 (or any system including the print server 308) may include adatabase 309 of three-dimensional models, and the print server 308 mayact as a server that provides a search engine for locating a particularthree-dimensional model in the database 309. The search engine may be atext-based search engine using keyword text queries, plain languagequeries, and so forth. The search engine may also or instead include animage-based search engine configured to identify three-dimensionalmodels similar to a two-dimensional or three-dimensional image provideby a user.

In another aspect, the printer server 308 may periodically search forsuitable content at remote locations on the data network, which contentmay be retrieved to the database 309, or have its remote location (e.g.,a URL or other network location identifier) stored in the database 309.In another aspect, the print server 308 may provide an interface forsubmission of objects from remote users, along with any suitablemetadata such as a title, tags, creator information, descriptivenarrative, pictures, recommended printer settings, and so forth. In oneaspect, the database 309 may be manually curated according to anydesired standards. In another aspect, printable objects in the database309 may be manually or automatically annotated according to contenttype, popularity, editorial commentary, and so forth.

The print server 308 may more generally provide a variety of managementfunctions. For example, the print server 304 may store a predeterminedalternative three-dimensional printer to execute a print job from aremote user in the event of a failure by the one of the plurality ofthree-dimensional printers 304. In another aspect, the print server 308may maintain exclusive control over at least one of the plurality ofthree-dimensional printers 304, such that other users and/or printservers cannot control the printer. In another aspect, the print server308 may submit a print job to a first available one of the plurality ofthree-dimensional printers 304.

In another aspect, a print server 308 may provide an interface formanaging subscriptions to sources of content. This may include tools forsearching existing subscriptions, locating or specifying new sources,subscribing to sources of content, and so forth. In one aspect, a printserver 308 may manage subscriptions and automatically direct new contentfrom these subscriptions to a three-dimensional printer 304 according toany user-specified criteria. Thus while it is contemplated that athree-dimensional printer 304 may autonomously subscribe to sources ofcontent through a network interface and receive new content directlyfrom such sources, it is also contemplated that this feature may bemaintained through a remote resource such as a print server 308.

A print server 308 may maintain print queues for participatingthree-dimensional printers 304. This approach may advantageouslyalleviate backlogs at individual printers 304, which may have limitedmemory capacity for pending print jobs. More generally, a print server308 may, by communicating with multiple three-dimensional printers 304,obtain a view of utilization of multiple networked resources thatpermits a more efficient allocation of print jobs than would be possiblethrough simple point-to-point communications among users and printers.Print queues may also be published by a print server 308 so that userscan view pending queues for a variety of different three-dimensionalprinters 304 prior to selecting a resource for a print job. In oneaspect, the print queue may be published as a number of print jobs andsize of print jobs so that a requester can evaluate likely delays. Inanother aspect, the print queue may be published as an estimated timeuntil a newly submitted print job can be initiated.

In one aspect, the print queue of one of the print servers 308 mayinclude one or more print jobs for one of the plurality ofthree-dimensional printers 304. The print queue may be stored locally atthe one of the plurality of three-dimensional printers. In anotheraspect, the print queue may be allocated between the database 309 and alocal memory of the three-dimensional printer 304.In another aspect, theprint queue may be stored, for example, in the database 309 of the printserver 308. As used here, the term ‘print queue’ is intended to includeprint data (e.g., the three-dimensional model or tool instructions tofabricate an object) for a number of print job (which may be arrangedfor presentation in order of expected execution), as well as anymetadata concerning print jobs. Thus, a portion of the print queue suchas the metadata (e.g., size, status, time to completion) may be usefullycommunicated to a print server 308 for sharing among users while anotherportion of the print queue such as the model data may be stored at aprinter in preparation for execution of a print job.

Print queues may implement various user preferences on prioritization.For example, for a commercial enterprise, longer print jobs may bedeferred for after normal hours of operation (e.g., after 5:00 p.m.),while shorter print jobs may be executed first if they can be completedbefore the end of a business day. In this manner, objects can beidentified and fabricated from within the print queue in a manner thatpermits as many objects as possible to be fabricated before apredetermined closing time. Similarly, commercial providers offabrication services may charge explicitly for prioritized fabrication,and implement this prioritization by prioritizing print queues in acorresponding fashion.

In another aspect, a print server 308 may provide a virtual workspacefor a user. In this virtual workspace, a user may search local or remotedatabases of printable objects, save objects of interest (or linksthereto), manage pending prints, specify preferences for receivingstatus updates (e.g., by electronic mail or SMS text), managesubscriptions to content, search for new subscription sources, and soforth. In one aspect, the virtual workspace may be, or may include,web-based design tools or a web-based design interface that permits auser to create and modify models. In one aspect, the virtual workspacemay be deployed on the web, while permitting direct fabrication of amodel developed within that environment on a user-specified one of thethree-dimensional printers 304, thus enabling a web-based designenvironment that is directly coupled to one or more fabricationresources.

The content sources 310 may include any sources of content forfabrication with a three-dimensional printer 304. This may, for example,include databases of objects accessible through a web interface orapplication programming interface. This may also or instead includeindividual desktop computers or the like configured as a server forhosted access, or configured to operate as a peer in a peer-to-peernetwork. This may also or instead include content subscription services,which may be made available in an unrestricted fashion, or may be madeavailable on a paid subscription basis, or on an authenticated basisbased upon some other relationship (e.g., purchase of a related productor a ticket to an event). It will be readily appreciated that any numberof content providers may serve as content sources 310 as contemplatedherein. By way of non-limiting example, the content sources 310 mayinclude destinations such as amusement parks, museums, theaters,performance venues, or the like, any of which may provide contentrelated to users who purchase tickets. The content sources 310 mayinclude manufacturers such as automobile, computer, consumerelectronics, or home appliance manufacturers, any of which may providecontent related to upgrades, maintenance, repair, or other support ofexisting products that have been purchased. The content sources 310 mayinclude artists or other creative enterprises that sell various works ofinterest. The content sources 310 may include engineering orarchitectural firms that provide marketing or advertising pieces toexisting or prospective customers. The content sources 310 may includemarketing or advertising firms that provide promotional items forclients. More generally, the content sources 310 may be any individualor enterprise that provides single or serial objects for fabrication bythe three-dimensional printers 304 described herein.

One or more web servers 311 may provide web-based access to and from anyof the other participants in the environment 300. While depicted as aseparate network entity, it will be readily appreciated that a webserver 311 may be logically or physically associated with one of theother devices described herein, and may, for example, provide a userinterface for web access to one of the three-dimensional printers 304,one of the print servers 308 (or databases 309 coupled thereto), one ofthe content sources 310, or any of the other resources 316 describedbelow in a manner that permits user interaction through the data network302, e.g., from a client device 306 or mobile device 312.

The mobile devices 312 may be any form of mobile device, such as anywireless, battery-powered device, that might be used to interact withthe networked printing environment 300. The mobile devices 312 may, forexample, include laptop computers, tablets, thin client networkcomputers, portable digital assistants, messaging devices, cellularphones, smart phones, portable media or entertainment devices, and soforth. In general, mobile devices 312 may be operated by users for avariety of user-oriented functions such as to locate printable objects,to submit objects for printing, to monitor a personally owned printer,and/or to monitor a pending print job. A mobile device 312 may includelocation awareness technology such as Global Positioning System (“GPS”),which may obtain information that can be usefully integrated into aprinting operation in a variety of ways. For example, a user may selectan object for printing and submit a model of the object to a printserver, such as any of the print servers described above. The printserver may determine a location of the mobile device 312 initiating theprint job and locate a closest printer for fabrication of the object.

In another aspect, a printing function may be location-based, using theGPS input (or cellular network triangulation, proximity detection, orany other suitable location detection techniques). For example, a usermay be authorized to print a model only when the user is near a location(e.g., within a geo-fenced area or otherwise proximal to a location), oronly after a user has visited a location. Thus a user may be providedwith printable content based upon locations that the user has visited,or while within a certain venue such as an amusement park, museum,theater, sports arena, hotel, or the like.

The other resources 316 may include any other software or hardwareresources that may be usefully employed in networked printingapplications as contemplated herein. For example, the other resources316 may include payment processing servers or platforms used toauthorize payment for content subscriptions, content purchases, orprinting resources. As another example, the other resources 316 mayinclude social networking platforms that may be used, e.g., to sharethree-dimensional models and/or fabrication results according to auser’s social graph. In another aspect, the other resources 316 mayinclude certificate servers or other security resources for third partyverification of identity, encryption or decryption of three-dimensionalmodels, and so forth. In another aspect, the other resources 316 mayinclude online tools for three-dimensional design or modeling, as wellas databases of objects, surface textures, build supplies, and so forth.In another aspect, the other resources 316 may include a desktopcomputer or the like co-located (e.g., on the same local area networkwith, or directly coupled to through a serial or USB cable) with one ofthe three-dimensional printers 304. In this case, the other resource 316may provide supplemental functions for the three-dimensional printer 304in a networked printing context such as maintaining a print queue oroperating a web server for remote interaction with the three-dimensionalprinter 304. More generally, any resource that might be usefullyintegrated into a networked printing environment may be one of theresources 316 as contemplated herein.

It will be readily appreciated that the various components of thenetworked printing environment 300 described above may be arranged andconfigured to support networked printing in a variety of ways. Forexample, in one aspect there is disclosed herein a networked computerwith a print server and a web interface to support networkedthree-dimensional printing. This device may include a print server, adatabase, and a web server as discussed above. The print server may becoupled through a data network to a plurality of three-dimensionalprinters and configured to receive status information from one or moresensors for each one of the plurality of three-dimensional printers. Theprint server may be further configured to manage a print queue for eachone of the plurality of three-dimensional printers. The database may becoupled in a communicating relationship with the print server andconfigured to store print queue data and status information for each oneof the plurality of three-dimensional printers. The web server may beconfigured to provide a user interface over the data network to a remoteuser, the user interface adapted to present the status information andthe print queue data for one or more of the plurality ofthree-dimensional printers to the user and the user interface adapted toreceive a print job from the remote user for one of the plurality ofthree-dimensional printers.

The three-dimensional printer 304 described above may be configured toautonomously subscribe to syndicated content sources and periodicallyreceive and print objects from those sources. Thus in one aspect thereis disclosed herein a device including any of the three-dimensionalprinters described above; a network interface; and a processor (whichmay without limitation include the controller for the printer). Theprocessor may be configured to subscribe to a plurality of sources ofcontent (such as the content sources 310 described above) selected by auser for fabrication by the three-dimensional printer through thenetwork interface. The processor may be further configured to receiveone or more three-dimensional models from the plurality of contentsources 310 and to select one of the one or more three-dimensionalmodels for fabrication by the three-dimensional printer 304 according toa user preference for prioritization. The user preference may, forexample, preferentially prioritize particular content sources 310, orparticular types of content (e.g., tools, games, artwork, upgrade parts,or content related to a particular interest of the user).

The memory of a three-dimensional printer 304 may be configured to storea queue of one or more additional three-dimensional models not selectedfor immediate fabrication. The processor may be programmed toperiodically re-order or otherwise alter the queue according topre-determined criteria or manual user input. For example, the processormay be configured to evaluate a new three-dimensional model based upon auser preference for prioritization, and to place the newthree-dimensional model at a corresponding position in the queue. Theprocessor may also or instead be configured to retrieve content from oneof the content sources 310 by providing authorization credentials forthe user, which may be stored at the three-dimensional printer orotherwise accessible for presentation to the content source 310. Theprocessor may be configured to retrieve content from at least one of theplurality of content sources 310 by authorizing a payment from the userto a content provider. The processor may be configured to search asecond group of sources of content (such as any of the content sources310 described above) according to one or more search criteria provide bya user. This may also or instead include demographic information for theuser, contextual information for the user, or any other implicit orexplicit user information.

In another aspect, there is disclosed herein a system for managingsubscriptions to three-dimensional content sources such as any of thecontent sources 310 described above. The system may include a web serverconfigured to provide a user interface over a data network, which userinterface is adapted to receive user preferences from a user including asubscription to a plurality of sources of a plurality ofthree-dimensional models, a prioritization of content from the pluralityof sources, and an identification of one or more fabrication resourcescoupled to the data network and suitable for fabricating objects fromthe plurality of three-dimensional models. The system may also include adatabase to store the user preferences, and to receive and store theplurality of three-dimensional models as they are issued by theplurality of sources. The system may include a processor (e.g., of aprint server 308, or alternatively of a client device 306 interactingwith the print server 308) configured select a selected one of theplurality of three-dimensional models for fabrication based upon theprioritization. The system may include a print server configured tocommunicate with the one or more fabrication resources through the datanetwork, to determine an availability of the one or more fabricationresources, and to transmit the selected one of the plurality ofthree-dimensional models to one of the one or more fabricationresources.

In another aspect, there is disclosed herein a network ofthree-dimensional printing resources comprising: a plurality ofthree-dimensional printers, each one of the plurality ofthree-dimensional printers including a network interface; a serverconfigured to manage execution of a plurality of print jobs by theplurality of three-dimensional printers; and a data network that couplesthe server and the plurality of three-dimensional printers in acommunicating relationship.

In general as described above, the server may include a web-based userinterface configured for a user to submit a new print job to the serverand to monitor progress of the new print job. The web-based userinterface may permit video monitoring of each one of the plurality ofthree-dimensional printers, or otherwise provide information useful to aremote user including image-based, simulation-based, textual-based orother information concerning status of a current print. Details of asuitable user interface are discussed in further detail with referenceto FIG. 5 .

The fabrication resources may, for example, include any of thethree-dimensional printers 304 described above. One or more of thefabrication resources may be a private fabrication resource secured witha credential-based access system. The user may provide, as a userpreference and prior to use of the private fabrication resource,credentials for accessing the private fabrication resource. In anotheraspect, the one or more fabrication resources may include a commercialfabrication resource. In this case the user may providean authorizationto pay for use of the commercial fabrication resource in the form of auser preference prior to use of the commercial fabrication resource.

Many current three-dimensional printers require significantmanufacturing time to fabricate an object. At the same time, certainprinters may include a tool or system to enable multiple, sequentialobject prints without human supervision or intervention, such as theconveyor belt described above. In this context, prioritizing content maybe particularly important to prevent crowding out of limited fabricationresources with low priority content that arrives periodically forautonomous fabrication. As a significant advantage, the systems andmethods described herein permit prioritization using a variety ofuser-specified criteria, and permit use of multiple fabricationresources in appropriate circumstances. Thus prioritizing content ascontemplated herein may include any useful form of prioritization. Forexample, this may include prioritizing the content according to source.The content sources 310 may have an explicit type that specifies thenature of the source (e.g., commercial or paid content, promotionalcontent, product support content, non-commercial) or the type of contentprovided (e.g., automotive, consumer electronics, radio controlhobbyist, contest prizes, and so forth). Prioritizing content mayinclude prioritizing the content according to this type. Thethree-dimensional models themselves may also or instead include a type(e.g., tool, game, home, art, jewelry, replacement part, upgrade part,etc.), and prioritizing the content may include prioritizing the contentaccording to this type.

In one aspect, the processor may be configured to select two or more ofthe plurality of three-dimensional models for concurrent fabrication bytwo or more of the plurality of fabrication resources based upon theprioritization when a priority of the two or more of the plurality ofthree-dimensional models exceeds a predetermined threshold. That is,where particular models individually have a priority above thepredetermined threshold, multiple fabrication resources may be locatedand employed to fabricate these models concurrently. The predeterminedthreshold may be evaluated for each model individually, or for all ofthe models collectively such as on an aggregate or average basis.

In one aspect, the processor may be configured to adjust prioritizationbased upon a history of fabrication when a number of objects fabricatedfrom one of the plurality of sources exceeds a predetermined threshold.Thus, for example, a user may limit the number of objects fabricatedfrom a particular source, giving subsequent priority to content fromother sources regardless of an objectively determined priority for a newobject from the particular source. This prevents a single source fromoverwhelming a single fabrication resource, such as a personalthree-dimensional printer operated by the user, in a manner that crowdsout other content from other sources of possible interest. At the sametime, this may enable content sources 310 to publish on any convenientschedule, without regard to whether and how subscribers will be able tofabricate objects.

In another aspect, the processor may be configured to identify one ormore additional sources of content based upon a similarity to one of theplurality of sources of content. For example, where a content source 310is an automotive manufacturer, the processor may perform a search forother automotive manufactures, related parts suppliers, mechanics, andso forth. The processor may also or instead be configured to identifyone or more additional sources of content based upon a social graph ofthe user. This may, for example, include analyzing a social graph ofrelationships from the user to identify groups with common interests,shared professions, a shared history of schools or places of employment,or a common current or previous residence location, any of which may beused to locate other sources of content that may be of interest to theuser.

FIG. 4 depicts a method for operating a three-dimensional printer, suchas any of the three-dimensional printers described above, when coupledto a data network. As contemplated above, the three-dimensional printermay include a network interface for coupling to the data network, aswell as any number of sensors that provide status information forvarious aspects of the three-dimensional printer, which statusinformation may be communicated over the data network to a remote useror other automated or manual resource in order to monitor submission,progress, and completion of a print job. In general, the printer mayoperate as an autonomous network device coupled directly to the Internetthrough a cable mode, router, hub, or the like. In another aspect, theprinter may use a computer or other computing resource coupled to theprinter through a local area network or the like for steps requiringintensive computation (e.g., converting from a stereolithography orother computer automated design format into tool instructions),substantial storage (e.g., print queue management), or other hardware(e.g., cameras, environmental sensors, and so forth).

As shown in step 402, the method 400 may begin with receiving a printjob over the data network, which may include any of the data networksdescribed above. The print job may be received from a requester, whichmay for example include a remote device (or user of the remote device)such as a laptop or other computer. The requester may be coupled in acommunicating relationship to the three-dimensional printer through thedata network in a host-client relationship, a peer-to-peer relationship,a mutually hosted relationship (e.g., with both devices hosted by athird networked device) or any other relationship capable of supportingcommunications and data transfer between the requester and thethree-dimensional printer. In another aspect, a user may communicateindirectly with the three-dimensional printer, such as by interactingover the data network with a print server, subscription content source,or any other resource or service that facilitates managed access to thethree-dimensional printer over the data network, and acts as therequester to submit the print job.

As shown in step 404, the method 400 may include evaluating anavailability of the three-dimensional printer for the print job. Thismay be based upon a signal from any of the sensors associated with thethree-dimensional printer. It will be understood that this evaluationmay be performed locally at the three-dimensional printer, with anavailability indicator transmitted back to the requester, or thisevaluation may be performed remotely by a device that receives sensordata in raw or processed form from the sensor(s) of thethree-dimensional printer.

A wide variety of evaluations may be performed. For example, theevaluation may relate to the status of a current job executing on thethree-dimensional printer, or an analysis of one or more other jobs in alocal queue of the three-dimensional printer, any of which might resultin the three-dimensional printer being unavailable. For example, wherethe printer has a substantial number of queued jobs that will requireseveral hours to fabricate, or that uses all available local memory ofthe printer, then the printer may be identified as unavailable foradditional print jobs. As another example, the evaluation may be basedupon other sensors such as thermostats, motion or position errordetectors, or optical sensors, any of which might permit inferencesconcerning the ability of the three-dimensional printer to execute aprint job. For example, if an optical sensor detects an object within aworking volume of the three-dimensional printer, or if a thermal sensordetects that a print head is not at a suitable temperature (or is notresponding correctly to a heating command), the printer may not be readyand a corresponding evaluation may be provided. As another example, asensor may detect a quantity of build material available to the printer,and a processor on the printer may determine if the supply is inadequatefor the requested print job. Thus evaluating the availability of thethree-dimensional printer may include accepting the print job only if asupply of build material available for the three-dimensional printerexceeds an amount of build material required for the print job and oneor more additional jobs ahead of the requested print job in the queue.

Similarly, any of a variety of status checks for normal, error-freefunctioning of the three-dimensional printer may be undertaken prior toaccepting (or transmitting from a requester) a new print job. Moregenerally, a variety of sensors and other inputs (including, e.g., datathat may be stored locally in a memory of the three-dimensional printer)may provide useful information for assessing the availability of thedevice, and may be used as the sensor(s) contemplated herein to evaluateavailability of the three-dimensional printer for a print job.

In one aspect, the evaluation may be based on a receiving state of thethree-dimensional printer. The receiving state may be inferred based onvarious sensor signals and/or data indicative of whether thethree-dimensional printer is currently engaged in a print. In anotheraspect, the receiving state may be explicitly provided by an owner oradministrator of the three-dimensional printer, thus providing anopportunity for the administrator to control what level of access to theprinting resource will be provided to external users who might connectto the printer over the data network. Thus the receiving state may beselected from a group including, e.g., open, closed, or authenticated.In general, the open receiving state may permit access to any remoteuser, while the closed receiving state does not permit access to anyremote users (such as where the owner wishes to connect to the datanetwork to retrieve remote content, but does not wish to make thethree-dimensional printer publicly available). The authenticatedreceiving state may permit remote access conditioned upon receipt ofappropriate credentials. Thus in one aspect, availability may be basedupon an identity of a user - the requesterassociated with the print job.In this case, evaluating availability of the three-dimensional printermay include assessing an identity of the user, which may be determined,e.g., using access credentials such as a user name and password, adigital certificate, or any other techniques for securely identifyingthe user, either locally or with reference to a trusted externalresource such as a certificate server or the like.

In another aspect, the print job itself may be secured for communicationto the three-dimensional printer using, e.g., encryption of print ormodel data. The printer may in turn conditionally authorize printingaccording to any related access credentials. Thus in one aspect themethod may include securing the print job using a digital rightsmanagement technique that restricts execution of the print job to one ormore predetermined three-dimensional printers or to a printer havingsuitable credentials. In this context, evaluating the availability ofthe three-dimensional printer may include determining whether thethree-dimensional printer is one of the one or more predeterminedthree-dimensional printers, or whether the three-dimensional printer hasappropriate credentials. This technique may be particularly useful, forexample, where the print job includes purchased content or the like forwhich the content creator (or distributor) wishes to retain control offabrication, e.g., by limiting who, where, when, or how many times theprint job can be fabricated.

The evaluation may also or instead be based on a variety of sensormeasurements and/or other data or information about the processingstatus of the three-dimensional printer. By way of example and not oflimitation, evaluating the availability of the three-dimensional printermay include determining a percentage completion of a current print jobat the three-dimensional printer. Evaluating the availability of thethree-dimensional printer may include estimating a wait time until thethree-dimensional printer will be available and transmitting the waittime to the requester. Evaluating the availability of thethree-dimensional printer may include determining whether thethree-dimensional printer is immediately available.

It will also be appreciated that a wide variety of sensors may usefullybe employed in this evaluation. By way of non-limiting example, theplurality of sensors may include a video camera directed toward aworking volume of the three-dimensional printer. The plurality ofsensors may include an optical sensor that detects obstructions within aworking volume of the three-dimensional printer. The plurality ofsensors may include a sensor that detects a quantity of build materialavailable. The plurality of sensors may include a sensor that detects apresence of build material in a material supply feed.

As shown in step 406, when the three-dimensional printer is notavailable for a print job, the method 400 may include electronicallynotifying the requester that the print job has been rejected. This may,for example, include a notification such as a textual message or graphicdisplayed within a user interface used by the requester to submit theprint job, or this may include a notification using any suitablecommunication medium such as an SMS text message or electronic mailcommunication to the requester.

When the three-dimensional printer is not available for the print job,additional processing may be performed prior to notifying the requester,such as a search for additional, suitable printing resources and/orredirection of the print job. Thus in one aspect, the method may includeidentifying one or more alternative three-dimensional printers coupledto the data network as resources available for the print job when thethree-dimensional printer is not available. In another aspect, when thethree-dimensional printer is not available, the method may includeidentifying an alternative three-dimensional printer coupled to the datanetwork and redirecting the requester to the alternativethree-dimensional printer. The redirecting may include automaticallyredirecting the print job without user intervention, or the redirectingmay include transmitting a suggestion to the requester to use thealternative three-dimensional printer. More generally, any suitableinformation about other available resources and/or redirection of therequest may be transmitted to the requester when the three-dimensionalprinter that received the print job is determined to be unavailable.This may also include information about an expected wait time until theprinter will be available, when such information is provided by theprinter or can be reasonably inferred from other information.

As shown in step 407, a manual verification may be optionally requested,even where the three-dimensional printer is otherwise determined to beavailable, before adding the print job to the print queue. The requestfor manual verification by the requester may be provided, for example,along with contextual information such as an expected time before theprint job can begin fabrication, or a current image of thethree-dimensional printer (e.g., of the working volume or supply ofbuild material). Thus in one aspect, evaluating the availability of thethree-dimensional printer may include transmitting an image of thethree-dimensional printer to the requester, and receiving a manualconfirmation to proceed with the print job from the requester.

As shown in step 408, when the three-dimensional printer is available,the method 400 may include adding the print job to a queue for thethree-dimensional printer and initiating fabrication of an objectaccording to the queue. It will be understood that the three-dimensionalprinter may only have storage for a current print job, in which case theprint queue, or more specifically, the local print queue, may consist ofa currently active print job containing zero or one print jobs at alltimes. In another aspect, the three-dimensional printer may haveadequate storage and processing capabilities to locally manage asubstantial queue of print jobs, or alternatively, may be coupled to alocal resource such as a co-located desktop or laptop computer ornetworked-attached storage that can operate as a local print queueresource for the three-dimensional printer. When the print job isaccepted, a notification may be sent to the requester using, e.g., anyof the notification techniques described above.

It will be appreciated that certain print jobs may include multiple,separate physical objects. These objects may be generally unrelated,e.g., where a requester simply decides to build multiple objects at onetime, or these objects may be related. Related objects may includestructurally related objects, such as where an object larger than abuild volume is constructed from several smaller pieces, where theobject has several independent moving parts. Related objects may also orinstead be contextually related, as with a collection of game piecessuch as pieces for a chess board. When a request includes multipleobjects, adding these objects to the print queue may include additionalprocessing to allocate the objects among a number of suitablefabrication resources. Thus in one aspect where the print job includes aplurality of objects, the method may include identifying a plurality ofprinters in proximity to the three-dimensional printer and allocatingthe plurality of objects for concurrent fabrication among the pluralityof printers. This allocation may be managed by the three-dimensionalprinter that received the request (e.g., by having the printer act as arequester for several other proximate resources), or this allocation maybe managed by a remote print server that identifies and coordinatesoperation of a number of physically proximate or otherwise suitableresources.

As shown in step 410, the method 400 may include providing informationabout a queue for the three-dimensional printer to the requester. Thismay include transmitting a print queue status to the requester fordisplay in a user interface or within the body of an electronic mailmessage or text message, or more generally using any suitablecommunication medium. Although depicted in FIG. 4 as occurring after aprint job is added to the print queue, it will be understood that theprint queue status may be usefully shared with the requester at any timebefore or during processing of the print job, and/or periodically whilethe print job is pending or executing.

As shown in step 412, the method 400 may include completing fabrication,after which the requester may be notified and the object retrieved usingany suitable online and/or offline techniques.

Print queue status information as contemplated above may also includeinformation relating to operation of the three-dimensional printer. Forexample, the method may include transmitting status information from oneor more of the plurality of sensors to the requester during an executionof the print job. The method may include notifying the requester of asuccessful completion of the print job, or the method may includenotifying the requester if the print job fails to complete. In thiscommunication of status information, the three-dimensional printer mayalso request further user input, such as by inquiring whether to tryprinting the object again, or whether to forward an unsuccessful printjob to another resource. In one aspect, the status information mayinclude at least one photograph captured, e.g., from a video camera ordigital still camera associated with the printer, which may betransmitted directly to the requester, or to some other location such asa social networking platform. In one aspect, the social networkingplatform may include one or more of Flickr, Twitter, LinkedIn, Google+,and Facebook, or any other website or the like where the requester canshare the at least one photograph with others using tools availablewithin the social networking platform.

It will be readily appreciated that the above steps are provided by wayof example and not limitation, and that numerous variations are possibleincluding additions, omissions, and or variations of the steps recitedabove. All such variations as would be appreciated by one of ordinaryskill in the art are intended to fall within the scope of thisdisclosure. In particular, the various step described above may beperformed by a networked printer that directly hosts a connection with aremote user, or by a print server or the like that mediates print jobadministration between users and fabrication resources. Thus the varioussteps may be performed in a distributed manner among two or more of auser, by a print server, and/or by a three-dimensional printer dependingupon the specific network of devices performing the method. By way ofexample, a three-dimensional model may be transmitted directly from athree-dimensional scanner to a three-dimensional printer forfabrication. The scanner and the printer may be locally coupled to oneanother, or remotely coupled through a print server or the like, orconnected through a network using a peer-to-peer or similarrelationship.

It will also be understood that this disclosure includes apparatus forperforming the methods described above. Thus in one aspect there isdisclosed a three-dimensional printer including a network interfaceconfigured to receive a print job from a requester over a data network,a plurality of sensors that provide status information for a pluralityof aspects of the three-dimensional printer; and a processor configuredto evaluate an availability of the three-dimensional printer for theprint job based upon a signal from at least one of the plurality ofsensors. The processor may include any suitable processing circuitrysuch as any controller, microcontroller, microprocessor and/or othercircuitry used to control the three-dimensional printer, and/or anysimilar processing circuitry in a co-located computer or the like. Whereprocessing is distributed, e.g., among multiple printers, a printserver, a requester device, and so forth, the various steps may bedistributed in any suitable fashion consistent with networked printingas contemplated herein.

In another aspect, the method steps may be embodied in computerexecutable code stored in a non-transitory computer readable medium suchas a computer memory. Thus there is disclosed herein a computer programproduct embodied in a non-transitory computer readable medium that, whenexecuting on one or more computing devices, performs any of the stepsdescribed above. In one aspect, this may include the steps of: receivinga print job from a requester over a data network at a three-dimensionalprinter, the three-dimensional printer including a plurality of sensorsthat provide status information for a plurality of aspects of thethree-dimensional printer; and evaluating an availability of thethree-dimensional printer for the print job based upon a signal from atleast one of the plurality of sensors.

FIG. 5 depicts a user interface for networked three-dimensionalprinting. The user interface 500 may be a web page or other remotelycreated and executed interface supported, e.g., by one of the printservers or web servers described above. In another embodiment, the userinterface 500 may be served by one of the three-dimensional printersdescribed above, which may execute a web server for remote access toadministrative or fabrication functions of the three-dimensionalprinter. In another embodiment, the user interface 500 may be created bya local application that retrieves data, images, print queueinformation, models, and so forth from a variety of remote applicationsand other resources, while also formatting outbound commands from theclient device to the various resources so that the remote resources canbe integrated within a single workspace on a client device. The userinterface 500 may in general be rendered on a display or similarhardware on a client device or mobile device, and may permit userinteraction through any suitable controls to permit local control andadministration of remote fabrication resources. In general, the userinterface 500 may be an interface for management of a variety of remotefabrication resources as generally described above.

For example, the user interface 500 may include a first display area 502that shows a list of available online three-dimensional printers orother fabrication resources. This display area may be interactive, andmay permit, e.g., sorting of fabrication resources, searching for newfabrication resources, and the like. The first display area 502 may alsoor instead provide status information for each listed fabricationresource, such as information about availability, recent print activity,a current queue of objects for printing at that resource, and so forth.In one aspect where the user interface 500 is a web page for remoteusers to manage fabrication, the first display area 502 may be adaptedto receive a manual selection of one of the plurality ofthree-dimensional printers from the remote user to execute a print job.

The user interface 500 may also or instead include a second display area504 that shows a list of available models for fabrication by thefabrication resources. This may include any of a variety of interactivefeatures such as search capabilities for models, and links toinformation about models such as cost, user reviews, complexity andprint time, model renderings, descriptions, notes from a contentprovider, and so forth. This may also include an interface tool topermit a user to fabricate a model. The second display area 504 may beadapted to receive a batch print job from a remote user, the batch printjob including a plurality of related print jobs. For example, a user mayselect an object displayed in the second display area 504 that includesmultiple parts, or the user may select multiple items listed in thesecond display area 504 (using, e.g., a conventional control key andmouse click, or any other suitable user interface controls/techniques)for batch processing. This may also permit the remote user to provideadditional, related information, such as a permissible allocation of theplurality of related print jobs among the plurality of three-dimensionalprinters, which permissible allocation may include general preferences(e.g., high-speed printers or local printers), specific preferences(e.g., use printer xyz), or firm requirements (e.g., use only printerxyz, or only printers selected from a specific group).

The user interface 500 may also or instead include a third display area506 that shows a print queue. This may include a local print queue for aspecific fabrication resource, or this may include a print queue storedat a print server for a user, along with information about where andwhen each object is scheduled for fabrication. The user interface 500may permit one-click drag-and-drop print queue management ofthree-dimensional printing jobs. For example, a user may simply drag anobject from the second display area 504 (objects) into the third displayarea 506 (print queue) where the object may be automatically or manuallyprioritized for execution. Alternatively, the user may drag an objectfrom the second display area 504 into the first display area 502(printers) to request (with a single operation) fabrication of theobject by a specific printer. More generally, the user interface 500 mayfacilitate control over fabrication of models from a variety of contentsources using a variety of fabrication resources, some or all of whichmay be remote from a current user manipulating the user interface 500.

The user interface 500 may include a fourth display area 508 thatdisplays information for a currently active print job. This area mayusefully include any information related to the print job such asstatus, time to completion, source, current time, etc. Additionally,this area may include a control or group of controls for manualoperation of the three-dimensional printer by a remote user. Thus forexample a user may remotely stop fabrication, restart fabrication,cancel fabrication, change fabrication settings, perform a testextrusion, and so forth, as though the user were locally controlling theprinter.

The fourth display area 506 may include a visualization area 510 thatdisplays a visual representation of the print job. For example, thevisualization area 510 may display a current tool path of the printerthat is executing the print job, such as a two-dimensional layer of theobject showing a path of a print head as it traverses that layer. Thevisualization area 510 may also or instead show a simulated printobject, such as a rendering of a three-dimensional model depicting acurrent state of the completion of an object being fabricated accordingto a print job. The visualization area 510 may also or instead show animage of a working volume of a three-dimensional printer or otherfabrication resource captured during execution of the print job. Thismay, for example, include a digital still image (which may be updatedperiodically) or a video image captured from a video camera at thethree-dimensional printer. Thus a user may visually monitor progress orstatus of a remote print job through the user interface 500. A statusarea 512 may also be provided that shows current status information(e.g., percentage completion, time until start, time until completion,and so forth) for the active resource.

The user interface 500 may also include a menu bar 516 or the like forother functions not otherwise accounted for within the other activeareas. This may include file information, search tools, help menus, useror account information, and so forth. This may include controls to shareinformation about print activity. For example, the user interface mayinclude at least one control to capture a frame of data from the videocamera as a video image and to transmit the video image to a remotelocation through the data network. The remote location may, for example,be a social networking site such as any of the social network platformsdescribed above. In another aspect, the device may be configured totransmit the video image in an electronic mail communication to, e.g.,the user or one or more recipients identified by the user. In anotheraspect, the user interface may include a control to capture astop-motion animation of a fabrication of an object using the videocamera. This may include user controls for a frame rate, duration, orother parameters of the stop-motion animation so that an animation ofdesired length and detail can be created for sharing or other use.

FIG. 6 is a flowchart of a method for operating a three-dimensionalprinter on a network. In particular, the method 600 of FIG. 6 emphasizesautonomous operation of the three-dimensional printer using contentavailable through the data network.

The method 600 may begin with coupling a three-dimensional printer to adata network, as shown in step 602.

As shown in step 604, the method 600 may include locating one or moresources of content for fabrication by the three-dimensional printer onthe data network according to one or more user-provided criteria. Thesources of content may, for example, include any of the content sourcesdescribed above, which may provide content on a syndicated basis usingany suitable protocol (such as RSS or the like) so that thethree-dimensional printer can identify new content from the contentsources as the new content becomes available.

As shown in step 606, the method 600 may include subscribing to newcontent from the one or more sources of content.

As shown in step 608, the method may include receiving at least onethree-dimensional model of new content from one of the one or moresources of content. This may occur in a variety of ways. For example,where the three-dimensional printer has subscribed to an RSS feedprovided by the content source, a new item in the RSS feed (or mediaenclosure or similar content embedded in the feed) may provide a URL orthe like that identifies a network location for a three-dimensionalmodel, along with any metadata that the three-dimensional printer mightuse (or present to a user for evaluation) to determine whether toretrieve the three-dimensional model. It will be understood that whileRSS (“RDF Site Summary,” a.k.a., “Really Simple Syndication”) providesone useful platform for syndicating content including three-dimensionalmodels, any suitable technology or combination of technologies may alsoor instead be employed, including ‘push’ technologies that forwardnotifications to clients and/or ‘pull’ technologies that explicitlyrequest updates on any suitable regular or ad hoc basis.

It will be understood that fabrication of a single model using certaintechniques may take a substantial amount of time, regardless of the rateat which individual models or groups of models are published fromdifferent sources. As such, a method as contemplated herein mayadvantageously apply local prioritization to ensure that more desirablecontent is not crowded out of limited fabrication resources by lessdesirable content. Receiving content as shown in step 608 may alsoinclude receiving a plurality of three-dimensional models andprioritizing fabrication of the plurality of three-dimensional modelsinto an order of fabrication.

As shown in step 610, the method may include fabricating an object fromthe at least one three-dimensional model. As noted above, this mayinclude fabricating a plurality of three-dimensional models in an orderdetermined by a local prioritization scheme. Additional features may beusefully provided. For example, the model may be locally analyzed by aprinter and automatically scaled according to the printer’s buildvolume, or the model may alternatively be divided into multiple,separate objects, each fitting within the build volume, and all capableof being assembled into the original object. This approach may beparticularly advantageous where a printer is autonomously receiving andfabricating multiple objects in succession without user supervision.

Thus, in one aspect there is disclosed a three-dimensional printerconfigured for autonomous operation to retrieve and fabricate contentpublished to a network. While the method 600 described above isgenerally local in nature, it will be appreciated that other collocatedresources may be used, such as a desktop computer or the like coupled toa three-dimensional printer, which desktop computer may subscribe tocontent, prioritize new content, and then direct the content to thelocal three-dimensional printer. In another aspect, the various stepsmay be performed by a print server or the like which couples remotecontent sources to remote three-dimensional printers according to anyuser criteria. More generally, a variety of additions, omissions,rearrangements and modifications to the steps described above may beemployed without departing from the scope of this disclosure.

FIG. 7 is a flowchart of a method for operating a three-dimensionalprinter with a video camera and a network interface. In particular, themethod 700 of FIG. 7 emphasizes incorporation of data from the videocamera into operation and management of the three-dimensional printer.

As shown in step 702, the method 700 may begin with providing athree-dimensional printer including a build volume, a network interfacecoupled to a data network, and a video camera positioned to capturevideo of the build volume from a point of view, such as from above or infront a side of the build volume. This may, for example, include any ofthe three-dimensional printers described above.

As shown in step 704, the method 700 may include receiving athree-dimensional model through the network interface using, e.g., anyof the techniques for locating and retrieving models as described above.By way of example, this may include direct access to a content source,syndicated access to a feed of content, and/or use of a print server orother remote print management tool.

As shown in step 706, the method 700 may include fabricating thethree-dimensional model as an object within the build volume of thethree-dimensional printer, all as generally contemplated above.

As shown in step 708, the method 700 may include providing a userinterface to a remote user accessing the device through the networkinterface, wherein the user interface presents an image of the buildvolume from the camera and a two-dimensional projection of thethree-dimensional model from the point of view of the video camera. Thismay be any of the user interfaces described above, or any other suitableinterface for conveying visual information such as a video image and/ormodel projection. It will be understood that a variety of user interfacetechnologies and techniques are well known in the art, any of which maybe suitably adapted to providing the user interface as contemplatedherein. The two-dimensional projection may be any suitable rendering,simulation, or other visualization of the model and its current state ofcompletion. Thus for example the two-dimensional projection may beobtained from a three-dimensional scanner or other data acquisitiondevice coupled to a processor of the three-dimensional printer. Thetwo-dimensional projection may be an image of the object as simulatedbased upon operation of the three-dimensional printer, using, e.g., atool path history or a current state of completion. The two-dimensionalprojection may be dynamically updated to correspond to a state ofphysical completion of the object in order to provide real time, orquasi-real time visual status information. In one aspect, thetwo-dimensional projection may simply be a video image from the videocamera.

As shown in step 710, the method 700 may include transmitting statusinformation over the data network upon completion of the object. Thismay, for example, include data presented through the user interface, orany other status information or summary thereof. For example, the statusinformation may include a digital image from the video camera, which maybe transmitted with an electronic mail communication confirmingcompletion of the object. More generally, status information may includeany of the status information described above, and may be transmitted toa user through an electronic mail communication, instant messaging textmessage, or any other suitable communication medium.

It will be readily appreciated that a device such as a three-dimensionalprinter may be configured to perform the steps described above. Thus inone aspect there is disclosed herein a device including: athree-dimensional printer having a build volume; a network interfacecoupled to a data network; a video camera positioned to capture video ofthe build volume from a point of view; and a processor configured toreceive a three-dimensional model through the network interface, and tocontrol operation of the three-dimensional printer to fabricate thethree-dimensional model as an object within the build volume of thethree-dimensional printer, the processor further configured to provide auser interface to a remote user accessing the device through the networkinterface, and to present in the user interface an image of the buildvolume from the camera and a two-dimensional projection of thethree-dimensional model from the point of view of the video camera.

The processor may be configured to monitor operation of thethree-dimensional printer based upon a comparison of the two-dimensionalprojection with the image of the build volume. Using this type of imageanalysis, it may be possible to track actual progress against predictedprogress to identify equipment malfunctions or other interference thatmight cause the physical object to deviate from the model used tofabricate the physical object. For example, a temperature change in anextruder, an air bubble in a path of melted supply material, or a toolmisstep might cause an unrecoverable error in a fabrication process. Bycomparing actual to expected two-dimensional or three-dimensionalresults, a fabrication process can be expeditiously aborted andrestarted or otherwise addressed without waiting for completion andphysical inspection of the constructed object. In addition, more subtlefabrication errors such as misalignment of layers, surface holes,inaccurate material build-ups or deposits, rotational distortion, and soforth may also be detected and address prior to completion of a build.More generally, a variety of machine vision functions may be implementedlocally, or with cooperation between a local printer and a remote printserver, using a video camera or digital still camera as a source ofvisual input.

As generally described above, the three-dimensional printer may beconfigured with a variety of tools and functions to facilitate networkeduse. For example, the processor may be configured to providecredential-based access to a user interface of the three-dimensionalprinter. As another example, the user interface may provide statusinformation for the three-dimensional printer. This may include statusinformation for a build process executing on the three-dimensionalprinter currently, or an anticipated build. The user interface mayusefully display a two-dimensional tool path for the three-dimensionalprinter, the two-dimensional tool path corresponding to a current layerof the object during a fabrication of the object by thethree-dimensional printer, or any other useful two-dimensionalinformation. In one aspect, the processor may be configured to couplethe three-dimensional printer in a communicating relationship with aremote print server through the data network, such as to facilitatenetworked use or management of the three-dimensional printer through theremote print server.

The three-dimensional printer may also be configured for a variety ofdiagnostic and technical support functions. For example, the userinterface may support remote access for technical support during localoperation of the three-dimensional printer. Thus for example, technicalsupport personnel may connect to the three-dimensional printer andemploy the user interface to configure, troubleshoot, reprogram orupdate the three-dimensional printer from a remote location. The processmay be programmed for supporting functions. For example, the processormay be configured to fabricate a test object, capture an image of thetest object, and compare the image to the test object to validateoperation of the three-dimensional printer.

Devices, systems, methods, and techniques for creating a raft (e.g., aneasily removable raft) will now be discussed.

In general, rafts may be used in a three-dimensional printing processfor automatic leveling, to prevent warping of an object being printed,or the like. A typical raft may be printed as a regular grid ofcrisscrossing, spaced apart roads of material (e.g., build material).This may allow the raft to be easily removable from a build platform ofa three-dimensional printer and from an object being fabricated.However, these rafts may still create a substantial adhesion surfacethat bonds to an object being fabricated in certain locations, andcomplete removal of the raft from the object may be challenging. In theprior art, sparse rafts have been attempted, but typically allow for theprinted object to slightly droop between the raft filaments resulting inan unsatisfactory bottom surface. Interstitial drooping of the bottomlayer of the object (between raft lines) may result in a bond betweenthe first layer of the object and the last layer of the raft that isstronger than the bond between the first layer of the object and thesecond layer of the object.

FIGS. 8A and 8B illustrate fabrication of a raft for a three-dimensionalprinting process. Specifically, FIG. 8A depicts the creation of a firstlayer 810 in a three-dimensional printing system 800, and FIG. 8Bdepicts the creation of a second layer 812 in a three-dimensionalprinting system 802, where the first and second layers 810, 812 arelayers of an object being fabricated on a three-dimensional printer.FIGS. 8A and 8B showan extruder 804, a raft 806, a build platform 808, afirst layer 810, and a second layer 812. In general, the raft 806 may bea removable raft fabricated such that the raft 806 can be easily andpreferentially delaminated from an object after fabrication. In general,the printing process may include a processing height specified for theprocess, which identifies a vertical step size from layer to layerduring fabrication.

FIG. 8A depicts the extruder 804 fabricating the first layer 810 of theobject on the raft 806 in an extrusion path 814 with the extruder 804(i.e., a nozzle of the extruder) at a height H1 above a top of the raftthat is greater than the processing height (e.g., the height used tocreate the raft). The height, H1, as measured from the raft 806, maythus be equal to a processing height, h, plus another height, Δ (i.e.,H1 = h + Δ). A skilled artisan will recognize that the extruder 804 maybe raised to any suitable height greater than the processing heightabove the preceding layer that will retain but weaken the bond betweenthe first layer 810 and the raft 806.

FIG. 8B depicts the extruder 804 fabricating the second layer 812 of theobject with a second extrusion path 816. As shown in FIG. 8B, theextruder 804 may be disposed at a processing height, h, above a top ofthe first layer 810, such that the extruder 804 is closer to the firstlayer 810 when creating the second layer 812 than the extruder 804 wasto the raft 806 when creating the first layer 810. The creation of thesecond layer 812 may thus occur when the extruder 804 (i.e., a nozzle ofthe extruder) is disposed at a height H2. Corresponding machine readycode may be generated by a slicing engine or the like (e.g., asdescribed herein) to fabricate an object weakly bound to a raft 806.

In summary, in FIGS. 8A and 8B, the raft 806 may be printed at aprocessing height, h, above the build platform 808; the first layer 810may be printed at 2 h + Δ above the build platform 808; and the secondlayer 812 may be printed at a height somewhere between 3 h and 3 h+ Δabove the build platform 808. In this example, these values arereferenced to the build platform 808, but they may instead be referencedto another common z position. For example, the top of the raft 806 maybe at a processing height of h - Δ and the first layer 810 may be at aprocessing height of 2 h, thus placing the first layer 810 a distance Δabove the normal distance (the processing height, h) from the raft 806and providing a weaker bond. Thus, any of a variety of vertical stepsmay be used around the more generally specified processing height,provided that an additional offset, Δ, is used when fabricating thefirst layer of an object on a raft.

The vertical distances described herein refer generally to steps inprocessing height. This may imply, but does not necessarily require, aspecific resulting height in a layer. Thus, for example, when a layer is“fabricated” at a particular height, it may mean that the extruder 804or other mechanism is positioned within a build volume of athree-dimensional printer to fabricate at that height, or at somecorresponding vertical position that results in a layer fabricated atthat height. Similarly, fabrication at a particular height mayspecifically mean that the fabrication results in layers of thespecified height, or some consistent processing offset to such specifiedheight. The actual height achieved in any particular layer may depend onthe vertical position of any underlying surfaces, the volumetric flowrate of deposited material, the speed of extrusion, the type of buildmaterial being used or temperature thereof, or any of a variety of otherfactors. More generally, while processes are described in terms of aprocessing height, the resulting height may thus in certaincircumstances be higher or lower than a vertical height of the extruder804. Accordingly, terms such as height, processing height or the likeare not intended to refer to a specific absolute height, but rather to aconsistent relative value from layer to layer within a printing process.Thus for example, a height may refer to the actual height of an extrudernozzle at which an extruder deposits material, or to the actual heightof a resulting layer, or any other suitable frame of reference forconsistently determining a height as that term is used herein.

The extruder 804 may include any of the extruders described herein orthat may be otherwise utilized in a three-dimensional printing process.The extruder 804 may also or instead include any mechanism fordepositing a material in a three-dimensional printing process.

The raft 806 may be used, e.g., to automatically level a build platform,or to reduce or prevent warping of an object and separation from a buildplatform during a print. The raft 806 may be any as described herein.Theraft 806 may include a rectilinear pattern as described below, or anyother suitable pattern to provide a base for fabricating an object.

The build platform 808 may be any as described herein. In general, theraft 806, which may include one or more layers, may be fabricated on thebuild platform 808. The raft 806 may include multiple layers such as abase layer deposited on the build platform 808, one or more intermediatelayers, and a raft layer to support an object. The first layer 810described above mayinclude the first layer of the object fabricated onthe raft 806. The second layer 812 may include any layer printed aboveor on top of the first layer 810. It will be appreciated that ordinalterms such as ‘first’ and ‘second’ used herein are contextual labels ofconvenience, and do not imply any strict order or function of particularlayers. Thus, other layers may precede or come between a first layer anda second layer, and a first layer or second layer may generally refer toany layer of a raft or an object, all without departing from the scopeof this disclosure. As such, references throughout this document tolayers such as a “first layer” do not refer to a specific layer in afabrication process unless expressly stated or otherwise clear from thecontext.

While the foregoing description specifically contemplates removablerafts for interfacing objects to build platforms or the like, it will beappreciated that the principles of this disclosure may be readilyadapted to other applications such as support structures or the likeused in three-dimensional fabrication to provide elevated support invarious regions of an object. Thus it will be understood that the termraft as used herein also includes supports or support structures, andthis disclosure specifically contemplates adaptations of the techniquesherein to use with support structures for three-dimensional printing.

FIG. 9 shows examples of processing heights for layers of athree-dimensional build. In general, a technique may include depositinga first layer of a printed object above a raft at a height greater thana standard vertical processing step in order to form a weak bond to anunderlying layer. Then, a second layer may be deposited at a typicalheight so that it bonds more securely to the first layer than the bondof the first layer to the underlying layer. There is a wide range ofpossible processing heights for the next layer, and FIG. 9 shows a fewpossibilities represented by a first group of layer heights 900 and asecond group of layer heights 902. Where the top of one layer 904 (suchas the top layer of a raft) is at a height h, a second layer 906 (suchas the first layer of an object fabricated on the raft) may be at aheight greater than a normal processing height, h, for the process by anoffset, Δ, in order to provide a weaker bond to the first layer 904. Asubsequent layer may return to the normal processing height either in amanner that returns the overall process to the regular step size, h (asshown in the first group 900) or in a manner that immediately returnsthe next layer to the regular step size, h (as shown in the second group902) by subtracting the offset, Δ, from the next vertical step.

In the latter configuration, vertical steps occur at h, a second layerat 2 h + Δ, 3 h +Δ, and so forth (group 902). In the formerconfiguration, vertical steps occur at h, 2 h + Δ, 3 h, 4 h, and soforth (group 900). Either approach or combinations of or othervariations to these step sizes may also or instead be used provided thatthe first layer fabricated on the raft is weakly bonded to the raftusing a greater than normal vertical step size. In one aspect, it ispossible that Δ is relatively large, e.g., such that the second layer,which is extruded at 2 h + Δ, places the extruderat or above 3 h forextruding the first layer of an object fabricated on the raft. Thus, inone aspect, the extruder height for creating the second layer (such asthe first layer of an object fabricated on the raft) may be at orabovethe extruder height for creating the next layer (such as the secondlayer of an object fabricated on the first layer).

It will be appreciated that a number of equivalents to this generaltechnique exist. For example, the top layer of a raft may be fabricatedat any height not greater than the processing height, h, from a top of apreceding layer, such as a height of h -Δ, and the first layer of theobject may be fabricated at 2 h. This technique identically places anincreased distance of Δ between the layers in order to weaken theinterstitial bond. It should also be appreciated that all such heightsand dimensions provided herein are approximate, and one skilled in theart will readily appreciate and expect a certain amount of variabilityin all such physical values. Any such variations consistent with properoperation of the methods and systems described herein, or within therange of measurement or control limits of a particular hardwareconfiguration, whether characterized as “about” or “substantially” orthe like, are intended to fall within the scope of this disclosure.

FIG. 10 shows a first layer of a raft in a three-dimensional printingprocess. As shown in FIG. 10 , the first layer may include a rectilinearpattern 1000. The rectilinear pattern may form a base layer having amaximum segment length selected to avoid warping of the base layer awayfrom the build platform of a three-dimensional printer. In general, longruns of material with a relatively high coefficient of thermal expansion(e.g., thermoplastics), when adhered to a material with a relatively lowcoefficient of thermal expansion (e.g., aluminum) will tend todelaminate and warp away due to thermally induced stresses duringcooling. In order to mitigate these effects, long runs in the base of araft may be avoided by using a number of reduced-length segments asshown in FIG. 10 .

FIG. 11 shows a second layer 1100 of a raft in a three-dimensionalprinting process. The second layer may be deposited on the first layer,and may be deposited at a different orientation than the base layer ofFIG. 10 , e.g. at a forty-five degree offset, a sixty degree offset, orany other suitable offset. More generally, any number of such layers maybe used at progressively changing orientations relative to the baselayer.

FIG. 12 shows a third layer 1200 in a three-dimensional printingprocess. The third layer may be deposited on the second layer (and/orany number of other intermediate layers). In general, this layer mayinclude closely spaced segments of material in order to present a morecontinuous supporting surface for layers fabricated thereupon.

FIG. 13 is a flowchart of a method foroperating a three-dimensionalprinter. The method 1300 may include the use of acomputer programproduct for operating a three-dimensional printer having non-transitorycomputer executable code embodied in a non-transitory computer-readablemedium that, when executing on one or more computing devices, performsthe steps of the method 1300. The method 1300 may also or insteadinclude instructions to perform the steps of the method, which may beinstructions that configure the computer hardware arrangement to performthe steps ofthe method 1300.

As shown in step 1302, the method 1300 may includedetermining aprocessing height for depositing each of a plurality of layers in thethree-dimensional print. The processing height may be a nozzle heightfor an extruder in the three-dimensional printer, or another heightrelative to the extruder or a component thereof. Determining theprocessing height may include receiving this value in a set of printinginstructions, prompting a user to provide this value, selecting adefault value or a value based on a desired print resolution, orotherwise selecting, calculating, retrieving, or receiving a value of aprocessing height in any suitable dimensions use in a three-dimensionalprinting process. The plurality of layersof a raft and/or object may,subject to the variations discussed herein, be fabricated at verticalsteps in height substantially equal to the processing height using abuild material or the like. In one aspect, the build material ispolylactic acid and the processing height is about 0.20 millimeters. Inanother aspect, the build material is acrylonitrile butadiene styreneand the processing height is about 0.20 millimeters. Other processingheights are possible.

As shown in step 1304, the method 1300 may include depositing a baselayer including a rectilinear pattern having a maximum segment lengthselected to avoid warping of the base layer away from a build platform.This length may be estimated, determined empirically, determinedanalytically, or otherwise provided or determined, and may be used tolimit the length of individual segments within the rectilinear pattern.The base layer may be deposited directly onto a build platform or thelike, or on any other suitable supporting structure or material.

As shown in step 1306, the method 1300 may include depositingone or moreintermediate layers. Such intermediate layers may be deposited atprogressively changing orientations relative to the base layer. Theintermediate layer(s) may include the first layeras described below withregard to step 1308.

As shown in step 1308, the method 1300 may include fabricating a firstlayer of the three-dimensional print at a distance from an underlyinglayer no greater than the processing height to form a raft for anobject.In this context, the term “first” layer is intended to refer tothe layer immediately preceding the first object layer, or alternativelystated, the layer that is desired to be weakly bonded to the fabricatedobject. The underlying layer may be a build platform of thethree-dimensional printer, or any intermediate layer or a base layer asdescribed above. For example, the underlying layer may be a base layerfor the raft. The first layer may be formed of a plurality of segmentshaving a maximum spacing selected to reduce drooping of the second layerbetween each of the plurality of segments. It will be understood thatthe top layer of the raft may actually be offset below the processingheight (e.g., h - Δ, as discussed above), with the next layer fabricatedat twice the processing height (e.g., 2 h in the example above) to addan offset relative to the otherwise consistent step size and achieve aweakened bond to the raft below.

As shown in step 1310, the method 1300 may include fabricating a secondlayer of the three-dimensional print on the raft to form an initiallayer of the object. The second layer may be extruded at a distance froma top of the first layer greater than the processing height, therebyforming a relatively weak bond between the first layer and the secondlayer.In an implementation where the build material is polylactic acidand the processing height is about 0.20 millimeters, the second layermay beextruded at a distance at least 0.23 millimeters greater than theprocessing height above the first layer. In an implementation where thebuild material is acrylonitrile butadiene styrene and the processingheight is about 0.20 millimeters, the second layer may be extruded at adistance at least 0.35 millimeters greater than the processing heightabove the first layer. Other distances are possible for the extrusion ofthe second layer, and the magnitude of the offset may vary according to,e.g., the extrusion temperature, the material type, or any otherparameters.

As shown in step 1312, the method 1300 may includefabricating a thirdlayer of the three-dimensional print on the initial layer of the object.The third layer may be extruded at a distance no greater than theprocessing height from a top of the second layer, thereby forming arelatively strong bond between the second layer and the third layer. Forexample, the third layer may be extruded at a distance of about twicethe processing height from a top of the first layer.

As shown in step 1313, the method 1300 may include fabricating aplurality of additional layers to create an object. This may includefabricating a number of layers each at a vertical distance above apreceding layer substantially equal to the processing height.

As shown in step 1314, the method 1300 may include directing air at avariable flow rate toward the layers as they are being fabricated. Theair may be directed toward the layers using a cooling fan and duct. Thevariable flow rate may increaseor be greater as the first and secondlayers are being fabricated.

In one aspect, the first layer (or more generally, the raft) may befabricated with a first material and the second layer (or moregenerally, the object) may be fabricated with a second material that isdifferent than the first material. The third layer (and/or subsequentlayers) may be fabricated with the same material as either the firstmaterial or the second material, or a different material.

Implementations may include a system for operating a three-dimensionalprinter. The system may include a three-dimensional printer having anextruder, and processing circuitry associated with the three-dimensionalprinter that is configured to perform the steps of the method 1300. Theprocessing circuitry may be included in a processor, controller,microcontroller, or the like associated with the three-dimensionalprinter as described herein, or in another component, for example, acomputer locally coupled to the three-dimensional printer, or any othercomponent shown in FIGS. 1 or 3 .

FIG. 14 is a flowchart of a method foroperating a three-dimensionalprinter. The method 1400 may include generating tool instructions forbuilding a three-dimensional model, where the tool instructions includedirections to carry out the steps of the method 1400.

As shown in step 1402, the method 1400 may include extruding along afirst tool path that defines a raft layer.

As shown in step 1404, the method 1400 may include positioning anextruder of the three-dimensional printerat a height H1 above a top ofthe raft layer.The height H1 may be greater than a processing height forthe three-dimensional model.

As shown in step 1406, the method 1400 may include extruding along asecond tool path that defines a first layer of the three-dimensionalmodel, thereby securing the first layer to the top of the raft layerwith a first bond strength.

As shown in step 1408, the method 1400 may include positioning theextruder at a height H2 no greater than the processing height above atop of the first layer.

As shown in step 1410, the method 1400 may include extruding along athird tool path that defines a second layer of the three-dimensionalmodel, thereby securing the second layer to the first layer with asecond bond strength greater than the first bond strength.

As shown in step 1412, the method 1400 may include receiving a digitalrepresentation of the three-dimensional model and slicing the digitalrepresentation into a plurality of layers each including a twodimensional representation of a cross section of the three-dimensionalmodel. The slicing may be performed as described herein or as otherwiseknown in the art.

The techniques for raft creation may also be used for creating easilyremovable support structures. The extruder path may be generated, e.g.,during a process for classifying and generating different regions basedon their location within an outline, or generally during a method forgenerating extrusion paths and building a three-dimensional object basedon a digital three-dimensional model as described herein. The methodsmay take place via a server and/or a client device.

Techniques for slicing will now be discussed in more detail.

FIG. 15 depicts a networked three-dimensional printing environment. Ingeneral, the environment 1500 may include a data network 1506interconnecting a plurality of participating devices in a communicatingrelationship including, e.g., a server 1502 and a client 1508. The datanetwork 1506 may be any of the data networks described herein orotherwise known in the art.

The server 1502 may be any of the servers described herein. The server1502 may be configured to generate extrusion paths from a digitalrepresentation of a three-dimensional model. The server 1502 may includea database 1504. The database 1504 maystore a data structure 1518 for anumber of digital representations of a three-dimensional model 1520. Thedatabase 1504 may also or instead store machine-ready models 1522adapted for one of a number of types of three-dimensional printers eachhaving a predetermined configuration. The server 1502 may be coupled tothe database 1504 and coupled in a communicating relationship with adata network 1506. The server 1502 may be configured to respond to arequest from a client 1508 to slice a three-dimensional model andconvert it into a machine-ready model corresponding to athree-dimensional printer associated with the client 1508 andtransmitting the one of the machine-ready models to the client 1508.

The client 1508 may be any of the client(s) described herein, forexample, the client 1508 may be a three-dimensional printer with networkcapabilities, or the client 1508 may be another computing device such asa desktop computer, laptop computer, tablet, or the like locally coupledto a three-dimensional printer.

In one aspect, the server 1502 may be a web server that is configured toselect and convert a three-dimensional model into extrusion paths for athree-dimensional printer. In an implementation, the server 1502 mayprovide a user interface 1510 via the data network 1506, e.g., forbrowsing among three-dimensional models 1520 stored in the database1504. In order to facilitate the conversion in this manner, the server1502 may detect a type of three-dimensional printer associated with theclient 1508 in any of a number of ways. For example, if the client 1508is a three-dimensional printer, the client 1508 may self-identify a typefrom local version information. Similarly, if the client 1508 is adesktop computer or other computing device locally coupled to thethree-dimensional printer, the client 1508 may retrieve type informationfrom the three-dimensional printer and provide this information to theserver 1502. In another aspect, a user of the client 1508 may manuallyidentify a type of three-dimensional printer and/or specificcapabilities of the three-dimensional printer. Similarly, if the server1502 is unable to determine a type of three-dimensional printer for theclient 1508, the server 1502 may specifically request this informationin the user interface 1510.

In another aspect, the client 1508 may interact with the server 1502 inan authenticated session where a user of the client 1508 provides logininformation. The server 1502 may store an association of the user with aparticular printer or type of printer, and the server 1502 may use thisserver-side data to determine an association of the user or the client1508 with a particular type of three-dimensional printer for thepurposes of selecting a machine-ready model 1522 responsive to the useraction. Where a client 1508 selects a three-dimensional model forconversion, the client 1508 may be configured to either send a requestvia the data network 1506 to the server 1502 to convert thethree-dimensional model 1520 into an extrusion path, or to locallyconvert the three-dimensionalmodel 1520 via software and hardware on theclient 1508. The client 1508 may include a controller 1512, which may beoperable to control the components of the three-dimensional printer,such as the x-y-z positioning assembly. The controller 1512 may be thecontroller 110 as discussed in connection with FIG. 1 . The x-y-zpositioning assembly may be what interprets the machine-ready model(extrusion paths) and prints a three-dimensional object based on theinstructions. The x-y-z positioning assembly may include a gantry.

As described herein, the server 1502 may be configured to receive adigital model of an object through the data network 1506, and to createa number of machine-ready models 1522 for storage in the database 1504.The database 1504 may store any number of machine-ready models 1522 forany number of objects, and the server 1502 may provide a user interface1510 (e.g., in a web browser) for browsing or searching objects andselecting an object (or a specific machine-ready model) for download.

In one aspect, the server 1502 and database 1504 may use a one-to-onemapping of machine-ready models 1522 to printer types so that a singlemodel is deterministically selected for a three-dimensional printer. Inthis case, where no corresponding machine-ready model is available forthe specific type of three-dimensional printer, the request from theclient 1508 for a download or print may be denied by the server 1502. Inanother aspect, the server 1502 may include a slicing engine 1516 forcarrying out the conversion of the three-dimensional model 1518 to theextrusion paths. It will be noted that the terms “extrusion path” and“machine ready code” are generally used interchangeably herein to referto a spatial path that can be executed by a three-dimensional printerwhen extruding material to build an object. While the machine-ready codemay include other information such as temperature, start and stopinformation, movement speed, and so forth, that is not specificallyrelated to the extrusion path itself, these terms are intended to beused interchangeably unless another meaning is explicitly provided orotherwise clear from the context.

The slicing engine 1516 may employ various strategies, including withoutlimitation a receiving strategy, a parsing strategy, a groupingstrategy, an outline strategy, a processing strategy, a classificationstrategy, an optimization strategy, and a conversion strategy. Thesestrategies are discussed in more detail in connection with the method1600 of FIG. 16 herein. While a server-based embodiment is describedherein, it will be appreciated that the slicing engine may be located onthe client 1508, which may carry out the conversion locally or directlyon a printer having a processor and/or controller with suitableprocessing capabilities. All such variations are intended to fall withinthe scope of this disclosure and corresponding implementations are wellwithin the ordinary skill in the art. Thus, references to a serverherein will be understood to include references to any computing deviceor printer that might similarly perform various computing tasksassociated with the creation of machine ready code for fabricating anobject.

The server 1502 may include a modification engine 1514. The modificationengine 1514 may be configured to modify a selected one of themachine-ready models 1522 according to specific configurationinformation for the three-dimensional printer associated with the client1508. The modification engine 1514 may in general be used to modify apre-existing machine-ready modelin the database 1504 as an alternativeto storing multiple machine-ready models with minor variations. Forexample, if the three-dimensional printer includes a conveyor or otherhardware to automatically remove a completed object from a build volume,the modification engine 1514 may add corresponding instructions to themachine-ready code delivered to the client 1508 for execution on thethree-dimensional printer. Similarly, if the three-dimensional printerhas multi-color printing capability and the model includes multi-colorinformation (such as a texture map of surface colors), the modificationengine 1514 may include suitable color change instructions in themachine-ready code. This may also include software-enabled features suchas firmware upgrades or the like, and the server 1502 may detect suchsoftware-enabled features and where appropriate make modifications tothe machine-ready code with the modification engine 1514. While certaincapabilities or features may require an entirely different machine-readymodel, other features may be accommodated with the simple addition orremoval of a few lines of machine-ready code. In the latter context, themodification engine 1514 may usefully reduce the number of machine-readymodels 1522 required for a wide range of printer configurations andcapabilities. The slicing engine 1516 may include one or more of thefeatures described herein to optimize the printing of thethree-dimensional object based on the three-dimensionalmodel 1520 andmachine-ready code.

FIG. 16 is a flowchart of a method for generating extrusion paths andbuilding a three-dimensional object based on a digital three-dimensionalmodel. Specifically, in the method 1600 of FIG. 16 , the resultingthree-dimensional object may be built on an easily removable raft. Itwill be understood that the method 1600 may be used for buildingthree-dimensional objects and corresponding rafts having a variety ofdifferent geometries.

As shown in step 1602, the method 1600 may include receiving a digitalrepresentation of a three-dimensional model. For example, a digitalthree-dimensional model may include an STL (“stereolithography”) file, aCAD (“computer aided design”) file, or any other file format or the likefor computerized representations of three-dimensional shapes. In someimplementations, the file can be obtained from the output of athree-dimensional scanner, a three-dimensional modeling program, adatabase of three-dimensional models, or some combination of these. Ingeneral, any file or data structure describing athree-dimensional objectthat can be converted by a computer to printing instructions interpretedby the three-dimensional printer can be used. It will be noted that thetechniques described herein may, for example, be usefully implemented ina processor that converts a three-dimensional model from an STL file toGCODE or any other machine-ready form. The model may be received througha data network. A request may be made from a client to begin the processwhich may take place on client computer or server coupled to the clientcomputer via a network.

As shown in step 1604, the method 1600 may include parsing thethree-dimensional model and storing triangle coordinates extracted fromthe three-dimensional model. The triangle coordinates may be extractedfor storing in an array. For example, the triangle coordinates or“triangles” may be represented by the three-dimensionalcoordinates oftheir three points. The order of the points may determine which face ofthe triangle represents the inside direction of thethree-dimensionalmodel.

As shown in step 1606, the method 1600 may include grouping thetriangles. For example, during this step 1606, the layers to which eachtriangle contributes may be determined.

As shown in step 1608, the method 1600 may include generating an outlineonce the triangles are grouped. During this step 1608, the triangles maybe converted into collections of loops for each layer. This may be done,for example, by identifying a line segment where each triangle withinthe layer intersects a plane of the layer. The lines may be orientedaccording to the orientation of the triangle where it passes through theplane, and the resulting lines may be combined into loops.

As shown in step 1610, the method 1600 may include processing the loops,e.g., to simplify the two-dimensional outlines and remove detail that isfiner than what can be printed. For example, approximately collinearpoints within a configurable error threshold may be combined. Moregenerally, additional processing may be employed to restore continuityof the surface (e.g., repair non-manifold portions) and smooth theresulting path within the plane. The resulting outline(s) may representan extent of an object to be printed (within the layer). The resultingoutline may be used to directly create an extrusion path, or to createan inset for an extrusion path used to fabricate an object.

As shown in step 1612, the method 1600 may include classifying andgenerating different regions based on their location within the outline.The regions may, for example, include insets, roofs, floors, infills,supports, and rafts. Rafts may be used, e.g., to automatically level abuild platform, or to reduce or prevent warping of an object andseparation from a build platform during a print. Insets may define asurface of an object and contribute to the shape and the strength of theresulting build. Roofs and floors may be top and bottom surfacesrespectively, corresponding to z-axis minima and maxima of a model.Infill may generally include structures enclosed within an exteriorsurface of an object to provide internal structural support, support forroofs, and so forth. Supports may generally include structures externalto a model that are added to provide structural support during a print,such as for horizontal shelves or other shapes.

As shown in step 1614, the method 1600 may include optimizing pathsbased on the region classification. In other words, once the regions aregenerated and classified, an optimal way to traverse this output may bedetermined by step 1614. For example, during step 1614, objects may beextracted from the output of step 1612, and a path optimization strategymay be applied based upon, e.g., the classification and any otheravailable information, to obtain an optimal path for traversing thelayer of the model with an extrusion path. Optimization strategies maybe modular and programmatically represented as subclasses of anoptimizer class. In an embodiment, the goal of step 1614 is to find away to traverse all elements of a layer in an optimal order. In oneaspect, step 1614 creates open paths that go from the end vertex of onepath to the start of the closest path.

Since there may be redundant vertices between the paths and theconnections that link them, step 1614 may also remove these redundanciesand then smooth or otherwise simplify the optimized path. Theseoptimized paths may be paths that an extruder of a three-dimensionalprinter can take to optimally print a layer of a three-dimensionalobject based off of the digital three-dimensional model received in step1602. A variety of general and class-specific optimization techniquesare described in greater detail herein, and in the disclosuresincorporated by reference herein.

As shown in step 1616, the method 1600 may include converting theoptimally ordered extrusion paths into machine ready commands (i.e.,tool instructions) that can be interpreted by the controller of thethree-dimensional printer. The machine-ready commands may be GCODE orany command that can be interpreted by a three-dimensional printer.

As shown in step 1618, the method 1600 may include building athree-dimensional object based on the machine-ready commands.

Various steps of method 1600 may use one or more of the techniquesdescribed herein to optimally generate machine-ready code for building athree-dimensional object.

An implementation may use techniques described in MAKERBOT/WIKI, MiracleGrue How It Works,https://github.com/makerbot/wiki/wiki/Miracle-Grue-How-It-Works (as ofJun. 12, 2013), and/or MAKERBOT/WIKI, Miracle Grue Runtime Complexity,https://github.com/makerbot/wiki/wiki/Miracle-Grue-Runtime-Complexity(as of Jun. 12, 2013), where the entire contents of each is herebyincorporated by reference.

Techniques for printing layers having curves will now be discussed.Specifically, dynamic speed calculations, e.g., to allow slower gantrymovements / extruder movements around tight curves will now bediscussed.

In one embodiment, while the object model is being sliced via methodsdescribed herein, the server, the client, or the like,may identifycurves in each layer of the object. The created tool instructions maytell the x-y positioning assembly or the x-y-z positioning assembly(where either of which may include a gantry)of a three-dimensionalprinter to use slower speeds for moves within a curve. This can lead toimproved printing of the object. While specific techniquesare describedherein, it will be understood that these approaches may be suitablydeployed in a variety of ways, such as by using a first speed for allcurves and a second (faster) speed for all straight line segments, or byadjusting speed substantially continuously according to a current radiusof curvature for the path.

In one aspect, the toolpath may be expressed as a sequence of X, Ycoordinate pairs. The toolpath may be expressed as a piecewise linearfunction:

$\begin{array}{l}{x = P_{x}(d)} \\{y = P_{y}(d)}\end{array},d \in \left\lbrack {0,\text{D}} \right\rbrack$

where D is the total length of the toolpath.

Consider each window over the range of d

[d_(a), d_(a) + ε]

where ε is the window length.

Within each window, the curvature C may be defined by:

$C + {\sum\limits_{i = 1}^{n}\left| {\text{Θ}\left( v_{i} \right)} \right|}$

where Θ(v_(i)) is the interior angle at vertex i, for each vertex 1 to nthat falls inside the window.

A function for velocity may then be derived as:

$V(d) = \left\{ \begin{array}{l}{s,\text{s} \in \left( {0,1} \right)\text{if}d\text{falls in any window where C > C}_{\text{t}}} \\{\mspace{6mu}\mspace{6mu}\mspace{6mu}\mspace{6mu}\mspace{6mu} 1\mspace{6mu}\mspace{6mu}\mspace{6mu}\mspace{6mu}\mspace{6mu}\mspace{6mu}\text{otherwise}}\end{array} \right\}$

where s is the slowdown ratio and C_(t) is the curvature threshold.

A linear filter may then be applied to compute a smooth dynamic velocityat every point along the path, P, for example, as described inWIKIPEDIA, Linear filter, http://en.wikipedia.org/wiki/Linear_filter (asof Jun. 12, 2013), which is hereby incorporated by reference in itsentirety.

FIG. 17 is a flowchart of a method for operating a three-dimensionalprinter. The method 1700 may provide for speed control of the extruderand/or x-y positioning assembly according to the curvature of a layer ofa three-dimensional object to be fabricated.

As shown in step 1702, the method 1700 may include identifying curves inlayers of an object to be fabricated in a three-dimensional printingprocess. The three-dimensional printing process may include the use of athree-dimensional printer having a positioning assembly configured tomove an extruder during the three-dimensional printing process forfabricating the object. The curves may be identified by the methodsdescribed herein, or as may be otherwise known in the art.

As shown in step 1704, the method 1700 may include applying a linearfilter to compute a smooth dynamic velocity at points along a path (P)of the extruder.

As shown in step 1706, the method 1700 may include creating toolinstructions for controlling the positioning assembly of thethree-dimensional printer, where the tool instructions provide forslower speeds of the extruder within a curve having a radius within apredetermined range. The tool instructions may adjust the speed of theextruder substantially continuously according to a current radius ofcurvature for the path of the extruder. The tool instructions mayutilize, e.g., the velocity function described herein, or othertechniques that may be known in the art.

Techniques for printing spurs will now be discussed.

When creating paths for certain geometries, spurs may occur that includea single, open path instead of a closed loop. Spurs may occur, forexample, when the area to be printed is so narrow that it is equal to asingle filament width (as opposed to two filament widths as is requiredby a typical inset). For example, regions of a three-dimensional modelcan be defined by their outlines, and shells for an extrusion path maybe created from an inset of the model outline, which can be obtainedusing conventional graphics techniques. After a shell has been defined,it may be outset by the same distance as the inset used to obtain theshell, thus resulting in a shell that more closely corresponds to theoutline of the original model (with some details missing due to, e.g.,smoothing and so forth). A difference between the shell outline and theoriginal model outline results in so-called spur regions. Thus, in oneaspect, a spur may be any two-dimensional region corresponding to adifference between a model outline and a shell of an extrusion pathoutline. Spurs may be an interior or an exterior inset. Becausespurs areextensions of insets, they should obey the same ordering rules. Whenprinting insets, spurs contained within each inset tree node may betraversed in the same manner as its children. This may naturallypreserve the correct order.

Spur regions may be usefully filled to avoid printing artifactsassociated with single thickness segments extended from atwo-dimensional shape. The process may begin with spur outlines. Anoutline may be a polygon made from contiguous line segments. Opposingline segments may be identified by taking endpoints of each segment andtesting which segments are closest to them. A list of wall pairs may beformed from this result, and the list may be filtered to remove certainpair configurations that produce undesirable results according to one ormore rules. In general, each wall pair is adjacent to another wall pairif those pairs share a line segment, or if one segment of a pair sharesan endpoint with one segment of the other pair. Wall pairs can also bebisected. Two segments of a pair may be projected out until theyintersect and a triangle may be formed. By placing a base on thistriangle equal to a minimum spur width (the narrowest space that a spurcan fit through according to a predetermined design rule), and anotherbase of length equal to the maximum spur width (the largest width beforea spur becomes a shell), then finding the midpoint of those two bases, aline connecting these two respective midpoints may provide a bisectionof a wall pair.

Once adjacent wall pairs have been identified and bisected, theresulting bisections for a number of wall pairs may be chained. A chainmay be started, for example, by choosing a wall pair to start with,bisecting it, and making one endpoint of the bisection the first pointin the chain.A number of adj acent wall pairs may then be located andbisected. If there is a single bisection that intersects the currentbisection it may be chained directly. If there are a number ofbisections, the bisections may be ranked using a heuristic, and thehighest ranking intersection point may be added to a current chain. Atthe same time, the corresponding wall pair may become the current wallpair and the process may repeat until there are no adjacent,intersecting bisections. At this point, the chain may be ended with anendpoint of the last bisection.

This process may be repeated with a new, unused wall pair serving as anew starting point for a new chain until there are no unused wall pairsleft, at which point the process may conclude.

FIG. 18 is a flowchart of a method foridentifying and printing spurs.

As shown in step 1802, the method 1800 may include defining a shell foran extrusion path from an inset of a three-dimensional model outline.

As shown in step 1804, the method 1800 may include out setting the shellby a distance equal to the inset used to define the shell, therebycreating a shell that corresponds to the three-dimensional modeloutline.

As shown in step 1806, the method 1800 may include determining adifference between the shell that corresponds to the three-dimensionalmodel outline and the shell for the extrusion path to determine spurregions.

As shown in step 1808, the method 1800 may include creating a spuroutline made from line segments.

As shown in step 1810, the method 1800 may include creating a list ofwall pairs by testing the line segments.

As shown in step 1812, the method 1800 may includefiltering the list toremove certain pair configurations that produce undesirable resultsaccording to one or more rules.

As shown in step 1814, the method 1800 may include bisecting the wallpairs.

As shown in step 1816, the method 1800 may include chaining the bisectedwall pairs.

As shown in step 1818, the method 1800 may include ending the chain withan endpoint of a last bisection.

As shown in step 1820, the method 1800 may includerepeating the abovesteps with a new, unused wall pair serving as a new starting point for anew chain until there are no unused wall pairs left.

Techniques for smoothing will now be discussed.

In one aspect, smoothing may be performed on individual, two-dimensionallayers of an extrusion path. In general, smoothingmay be performed on athree-dimensional model prior to the creation of machine-ready code.However, smoothing may also or instead be performed by the slicingengine as described herein when creating an extrusion path.

Iterative smoothing techniques may be improved in this context byprioritizing smoothing with an error-based ranking function. Forexample, outlines may be composed of segments, e.g., line segments. Theline segments may be combined in order to see ageometric error thatoccurs. The purpose of this may be to remove the vertex. The verticesmay be ranked based on error. The smaller errors may be removed first.The smoothing may end when there is no more error below a certainthreshold.

In one aspect, topological smoothing may be achieved using energyminimization techniques. For example, one technique uses a set ofelementary transformations (e.g., edge collapse, edge split, and edgeswap) that are applied, e.g., randomly and accepted whenever an energyfunction, E(K), is reduced as a result. This technique is described forexample in Hoppe, et al., Mesh Optimization, COMPUTER GRAPHICS (SIGGRAPH‘93 Proceedings) Annual Conference Series, 27, No. 3, August 1993,19-26, ¶ 4.2 (available athttp://www.stat.washington.edu/wxs/Siggraph-93/siggraph93.pdf (as ofJun. 12, 2013)), which is hereby incorporated by reference in itsentirety. Hoppe, et al.describes a set of moves for applying suchelementary transformations to a boundary edge or vertex of a shape.

FIG. 19 is a flowchart for smoothing in a three-dimensional printingprocess.

As shown in step 1902, the method 1900 may includedefining an outlinefor a three-dimensional model, the outline including line segments.

As shown in step 1904, the method 1900 may include combining the linesegments to determine a geometric error.

As shown in step 1906, the method 1900 may include identifying vertices.

As shown in step 1908, the method 1900 may include ranking the verticesbased on the error.

As shown in step 1910, the method 1900 may include removing the verticesbased on the ranking.

Many of the above systems, devices, methods, processes, and the like maybe realized in hardware, software, or any combination of these suitablefor the control, data acquisition, and data processing described herein.This includes realization in one or more microprocessors,microcontrollers, embedded microcontrollers, programmable digital signalprocessors or other programmable devices or processing circuitry, alongwith internal and/or external memory, any of which may serve as thecontroller described above or supplement processing of the controllerwith additional circuitry. This may also, or instead, include one ormore application specific integrated circuits, programmable gate arrays,programmable array logic components, or any other device(s) that may beconfigured to process electronic signals. It will further be appreciatedthat a realization of the processes or devices described above mayinclude computer-executable code created using a structured programminglanguage such as C, an object oriented programming language such as C++,or any other high-level or low-level programming language (includingassembly languages, hardware description languages, and databaseprogramming languages and technologies) that may be stored, compiled orinterpreted to run on one of the above devices, as well as heterogeneouscombinations of processors, processor architectures, or combinations ofdifferent hardware and software. At the same time, processing may bedistributed across devices such as the various systems described above,or all of the functionality may be integrated into a dedicated,standalone device. All such permutations and combinations are intendedto fall within the scope of the present disclosure.

In other embodiments, disclosed herein are computer program productscomprising computer-executable code or computer-usable code that, whenexecuting on one or more computing devices (such as the devices/systemsdescribed above), performs any and/or all of the steps described above.The code may be stored in a computer memory, which may be a memory fromwhich the program executes (such as random access memory associated witha processor), or a storage device such as a disk drive, flash memory orany other optical, electromagnetic, magnetic, infrared or other deviceor combination of devices. In another aspect, any of the processesdescribed above may be embodied in any suitable transmission orpropagation medium carrying the computer-executable code described aboveand/or any inputs or outputs from same.

The method steps of the implementations described herein are intended toinclude any suitable method of causing such method steps to beperformed, consistent with the patentability of the following claims,unless a different meaning is expressly provided or otherwise clear fromthe context. So for example performing the step of X includes anysuitable method for causing another party such as a remote user, aremote processing resource (e.g., a server or cloud computer) or amachine to perform the step of X. Similarly, performing steps X, Y and Zmay include any method of directing or controlling any combination ofsuch other individuals or resources to perform steps X, Y and Z toobtain the benefit of such steps. Thus method steps of theimplementations described herein are intended to include any suitablemethod of causing one or more other parties or entities to perform thesteps, consistent with the patentability of the following claims, unlessa different meaning is expressly provided or otherwise clear from thecontext. Such parties or entities need not be under the direction orcontrol of any other party or entity, and need not be located within aparticular jurisdiction.

It will be appreciated that the methods and systems described above areset forth by way of example and not of limitation. Numerous variations,additions, omissions, and other modifications will be apparent to one ofordinary skill in the art. Thus, the order or presentation of methodsteps in the description and drawings above is not intended to requirethis order of performing the recited steps unless a particular order isexpressly required or otherwise clear from the context.

While particular embodiments of the present invention have been shownand described, it will be apparent to those skilled in the art thatvarious changes and modifications in form and details may be madetherein without departing from the spirit and scope of the invention.The features of the invention as described herein should be interpretedin the broadest sense allowable by law.

Improvements to three-dimensional printers, and systems and/or methodsof using such three-dimensional printers, and/or structures fabricatedusing such three-dimensional printers are described below in variousnon-limiting examples. These exemplary embodiments may generally bedeployed in combination with any of the systems and methods disclosedabove, or any similar suitably similar fabrication platforms, or in anyother context that would be apparent to one of ordinary skill in theart, and all such uses and variations are intended to fall within thescope of this disclosure.

1-20. (canceled)
 21. A method for generating extrusion paths tofabricate an object based on a three-dimensional model, the methodcomprising: parsing the three-dimensional model to extract a pluralityof triangle coordinates, the plurality of triangle coordinates forming aplurality of triangles that characterize an exterior surface of thethree-dimensional model; grouping the plurality of triangles accordingto a plurality of layers, wherein each of the plurality of layers is afabrication layer at a processing height step within a build volume of athree-dimensional printer, and wherein each of the plurality of layersnonexclusively contains one or more of the plurality of trianglesintersecting the one of the plurality of layers at the processing heightstep, thereby providing a group of triangles for each of the pluralityof layers within the build volume; for each layer of the plurality oflayers containing at least one triangle: selecting a corresponding groupof triangles, identifying line segments where each triangle in thecorresponding group of triangles intersects a plane of the layer,combining the line segments into one or more loops for the layer, andprocessing each of the one or more loops into a printable path for aportion of the object within that one of the plurality of layers; andcombining the printable path for the object in each one of the pluralityof layers to form an extrusion path for fabricating the object withinthe build volume.
 22. The method of claim 21, wherein processing each ofthe one or more loops for one of the layers includes removing portionsof each of the one or more loops having a size below a predeterminedthreshold set by printing capabilities of a three-dimensional printer,thereby forming a processed outline for the layer, and creating anextrusion path for an object in the layer at least partially formed bythe processed outline.
 23. The method of claim 22, further comprising:classifying one or more regions based on a location within the processedoutline; optimizing extrusion paths based on classification of the oneor more regions; converting the optimized extrusion paths intomachine-ready commands interpretable by a controller of thethree-dimensional printer; and building a three-dimensional object basedon the machine-ready commands using the three-dimensional printer. 24.The method of claim 23, wherein the one or more regions include at leastone of an inset, a roof, a floor, infill, a support, and a raft.
 25. Themethod of claim 23, wherein optimization includes identifying an openpath from an end vertex of a first path to a start vertex of a secondpath, and including the open path in the optimized extrusion paths. 26.The method of claim 23, wherein optimization includes removing redundantvertices between paths and redundant connections between vertices. 27.The method of claim 21, wherein processing each of the one or more loopsincludes removing detail that is smaller than a print resolution of thethree-dimensional printer.
 28. The method of claim 21, whereinprocessing each of the one or more loops includes restoring a continuityof a surface of the object within the plane of the layer.
 29. The methodof claim 21, wherein processing each of the one or more loops includesrepairing a non-manifold portion of at least one of the one or moreloops.
 30. The method of claim 21, wherein processing each of the one ormore loops includes smoothing the printable path within the plane of thelayer.
 31. The method of claim 21, wherein processing each of the one ormore loops includes identifying at least one curve in the printable pathand applying a linear filter to compute a dynamic velocity along the atleast one curve.
 32. The method of claim 21, wherein processing each ofthe one or more loops includes identifying at least one curve in theprintable path and lowering a print speed for the printable path whenthe at least one curve has a radius of curvature within a predeterminedrange.
 33. The method of claim 21, wherein the three-dimensional modelincludes at least one of a stereolithography (STL) file and a computeraided design (CAD) file.
 34. The method of claim 21, wherein thethree-dimensional model includes at least one of: output from a scanner,output from a three-dimensional modeling program, and a selection from adatabase of three-dimensional models.
 35. The method of claim 21,further comprising storing the plurality of triangle coordinates in anarray.
 36. The method of claim 21, wherein an order of a set of threetriangle coordinates for each of the plurality of triangles defines aface directed toward an interior of the three-dimensional model.
 37. Themethod of claim 21, wherein processing each of the one or more loopsincludes combining collinear portions within a certain error threshold.38. A computer program product for generating extrusion paths tofabricate an object based on a three-dimensional model, the computerprogram product comprising non-transitory computer executable codeembodied in a non-transitory computer-readable medium that, whenexecuting on one or more computing devices, performs the steps of:parsing the three-dimensional model to extract a plurality of trianglecoordinates forming a plurality of triangles that characterizing anexterior surface of the three-dimensional model; grouping the pluralityof triangles according to a plurality of layers, wherein each of theplurality of layers is a fabrication layer for the object, and whereineach of the plurality of layers nonexclusively contains one or more ofthe plurality of triangles intersecting the one of the plurality oflayers, thereby providing a group of triangles for each of thefabrication layers; for each layer containing one or more of thetriangles: selecting a corresponding group of triangles for the layer,identifying line segments where each triangle in the corresponding groupof triangles intersects the layer, combining the line segments into oneor more loops for the layer, and processing each of the one or moreloops into a printable path for a portion of the object; and combiningthe printable path for the object in each layer to form an extrusionpath for fabricating the object with a three-dimensional printer. 39.The computer program product of claim 38, wherein processing each of theone or more loops includes removing portions of each of the one or moreloops having a size below a predetermined threshold set by printingcapabilities of a three-dimensional printer, thereby forming a processedoutline for the layer, and creating an extrusion path for an object inthe layer at least partially formed by the processed outline.
 40. Asystem comprising: a three-dimensional printer having an extruder; andprocessing circuitry associated with the three-dimensional printer andconfigured by computer executable code to perform the steps of:receiving a three-dimensional model of an object; parsing thethree-dimensional model to extract a plurality of triangle coordinatesforming a plurality of triangles that characterizing an exterior surfaceof the three-dimensional model; grouping the plurality of trianglesaccording to a plurality of layers, wherein each of the plurality oflayers is a fabrication layer for the object, and wherein each of theplurality of layers nonexclusively contains one or more of the pluralityof triangles intersecting the one of the plurality of layers, therebyproviding a group of triangles for each of the fabrication layers; foreach layer containing one or more of the triangles: selecting acorresponding group of triangles for the layer, identifying linesegments where each triangle in the corresponding group of trianglesintersects the layer, combining the line segments into one or more loopsfor the layer, and processing each of the one or more loops into aprintable path for a portion of the object; and combining the printablepath for the object in each layer to form an extrusion path forfabricating the object with a three-dimensional printer.